如何用Python基于已知Pascal三角行生成下一行?
帕斯卡三角单行推导下一行的解决思路与代码修正
核心规则回顾
帕斯卡三角中,任意一行的下一行满足:
- 首尾元素都是1
- 中间每个元素 = 上一行中相邻两个元素的和
你的代码问题分析
当前代码逻辑完全偏离了相邻元素求和的需求,嵌套循环和过早的return导致根本没处理核心计算逻辑。
解决思路
- 边界情况处理:如果输入的行是空列表,直接返回
[1](这是三角的起始行) - 构建结果行:
- 先给结果列表添加第一个1
- 遍历上一行的元素,从第1个到倒数第1个,每次取当前元素和前一个元素相加,把结果加入列表
- 最后给结果列表添加末尾的1
修正后的代码
def generate_pascal_row(row): """Generate the next row of Pascal's triangle.""" # 处理空输入的边界情况 if not row: return [1] result = [1] # 开头的1 # 遍历上一行的相邻元素对,计算和 for i in range(1, len(row)): result.append(row[i-1] + row[i]) result.append(1) # 结尾的1 return result print(generate_pascal_row([1, 2, 1])) # => [1, 3, 3, 1] print(generate_pascal_row([1, 4, 6, 4, 1])) # => [1, 5, 10, 10, 5, 1] print(generate_pascal_row([])) # => [1]
代码说明
if not row:判断输入是否为空,直接返回起始行- 初始化
result为[1],对应下一行的第一个元素 range(1, len(row)):遍历上一行的索引,从1开始,这样可以同时获取当前索引i和前一个索引i-1的元素,求和后加入结果- 最后添加末尾的1,完成下一行的构建
内容的提问来源于stack exchange,提问作者Ferroum Samir
相关产品推荐
相关产品推荐

