You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Python基于已知Pascal三角行生成下一行?

帕斯卡三角单行推导下一行的解决思路与代码修正

核心规则回顾

帕斯卡三角中,任意一行的下一行满足:

  • 首尾元素都是1
  • 中间每个元素 = 上一行中相邻两个元素的和

你的代码问题分析

当前代码逻辑完全偏离了相邻元素求和的需求,嵌套循环和过早的return导致根本没处理核心计算逻辑。

解决思路

  1. 边界情况处理:如果输入的行是空列表,直接返回[1](这是三角的起始行)
  2. 构建结果行:
    • 先给结果列表添加第一个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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.17 00:55:24