使用数组/元组打印指定规则数字模式 代码未达预期如何修复
现有代码问题
- 函数逻辑完全不符合生成规则:没有逐行存储和计算的逻辑,仅在循环第一次迭代就返回了二元元组,直接终止函数运行,无法生成多行结果。
- 缺少上一行结果的存储逻辑:题目要求每一行的生成都依赖上一行的所有元素,现有代码没有任何变量存储历史行数据。
- 存在无限递归风险:函数内部循环外写了
print(append(n)),会导致函数不断调用自身,直到触发递归深度报错。 - 输出格式不匹配:要求返回/打印每行的列表结构,现有代码返回的是元组类型,不符合要求。
修复后可运行代码
def generate_pattern(n: int): # 初始化结果列表,第0行是[1] res = [[1]] # 已经有第0行,还需要生成n-1行 for i in range(1, n): prev_row = res[-1] current_row = [prev_row[-1]] # 遍历上一行的每个位置,计算当前行后续元素 for j in range(len(prev_row)): current_row.append(current_row[-1] + prev_row[j]) res.append(current_row) # 逐行打印 for row in res: print(row) return res # 测试n=4的情况 generate_pattern(4)
代码说明
- 首先初始化结果列表,放入规则要求的第0行
[1] - 逐行生成后续内容:每一行的第一个元素取上一行的最后一个元素
- 后续元素按照规则计算:当前行前一个元素 + 上一行对应位置的元素,追加到当前行
- 生成完所有行后逐行打印,同时返回完整结果供后续使用
- 传入n=4时输出和题目要求的示例完全一致
内容的提问来源于stack exchange,提问作者Dave Shah
相关产品推荐
相关产品推荐

