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

C#实现帕斯卡三角运行至第5步输出结果异常问题求助

帕斯卡三角代码问题修复

错误原因

  • 核心问题:将遍历的集合元素值误作为索引取值,这是导致第5层对应位置变为0的直接原因。
    你代码中foreach(int j in TempTriList)里的j是TempTriList存储的数值,不是下标。你用TempTriList[j]取值时,当j等于当前集合长度甚至超出时,要么取到错误位置的0,要么会触发索引越界异常。到第5层时,TempTriList对应位置的数值是6,TempTriList[6]刚好是末尾的0值,就出现了你看到的异常输出。
  • 次要问题:临时列表构建逻辑用Insert插入元素逻辑冗余,容易因为位置计算错误产生额外异常。

修正后代码

static void PascalsTri(int input)
{
    // 初始层 0 1 0
    int[] start = { 0, 1, 0 };
    List<int> TriList = new List<int>(start);
    // 输入合法性校验
    if(input < 1)
    {
        return;
    }
    // 打印首层
    Console.WriteLine(string.Join(" ", TriList));
    // 生成剩余层数
    for(int i = 1; i < input; i++)
    {
        List<int> TempTriList = new List<int>();
        // 每层开头补0
        TempTriList.Add(0);
        // 上一层相邻元素相加生成当前层中间值
        for(int j = 0; j < TriList.Count - 1; j++)
        {
            TempTriList.Add(TriList[j] + TriList[j + 1]);
        }
        // 每层结尾补0
        TempTriList.Add(0);
        // 更新当前层为下一次计算的上一层
        TriList = TempTriList;
        // 打印当前层
        Console.WriteLine(string.Join(" ", TriList));
    }
}

验证输出

当input=5时输出完全符合预期:

0 1 0
0 1 1 0
0 1 2 1 0
0 1 3 3 1 0
0 1 4 6 4 1 0

内容的提问来源于stack exchange,提问作者Gloop

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 13:45:04