酷代码 AI
菜单
服务商

将上题用python

```python def generate_pattern(n): if n == 1: return ["*"] # 获取 n-1 阶图案 sub_pattern = generate_pattern(n - 1) size = len(sub_pattern) # 计算中间空格数量 space_len = 2 (n - 2) # 构建新图案 pattern = [] # 第一部分:左上和右上拼接 for i in range(size): line = sub_pattern[i] + " " * space_len + sub_pattern[i] pattern.append(line) # 第二部分:左下左和左下右拼接 for i in range(size): pattern.append(sub_pattern[i]) return pattern def main(): with open("star.in", "r") as fin: n = int(fin.read().strip()) pattern = generate_pattern(n) with open("star.out", "w") as fout: for line in pattern: fout.write(line + "\n") if __name__ == "__main__": main() ``` 代码说明: 1. 递归函数 `generate_pattern`: - 当 n=1 时返回基础图案 `["*"]` - 对于 n>1,递归获取 n-1 阶图案 - 按规则组合三个 n-1 阶图案 2. 组合规则: - 第一部分:将两个 n-1 阶图案用空格隔开拼接 - 第二部分:直接添加一个 n-1 阶图案 - 空格数量为 2^(n-2),符合题目规律 3. 内存优化: - 使用列表存储图案,避免字符串重复创建 - 递归深度最大为 8,完全可行 - 总字符数不超过 2^8 × 2^7 = 32768 个 4. 输入输出: - 从 `star.in` 读取整数 n - 将生成的图案写入 `star.out` 这个实现简洁高效,能够正确处理 n≤8 的所有情况,不会出现内存超限问题。 [2026-01-06 17:51:09 | AI问答 | 457点数解答]

相关提问
发财导航,免费问AI
实用工具查看更多