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

C#实现帕斯卡三角代码出现无限循环及内存溢出问题排查

帕斯卡三角代码的内存溢出问题分析与修复

问题根源

  • trianglestorage未重置:你在循环中一直复用同一个trianglestorage列表,每次循环都往里面追加元素却从不清空。执行triangle = trianglestorage后,下一次循环操作的triangle就是这个不断膨胀的列表,循环次数会随列表长度指数级增长,最终触发内存溢出。
  • 初始逻辑冗余:开头输出空列表不符合帕斯卡三角结构(第一行应为1)。

修复后的代码

static void Main(string[] args)
{
    int numrows = int.Parse(Console.ReadLine());
    PascalsTriangle(numrows);
}
static void PascalsTriangle(int numRows)
{
    List<int> currentRow = new List<int>();
    for (int i = 0; i < numRows; i++)
    {
        // 为当前行首尾添加1
        currentRow.Insert(0, 1);
        currentRow.Add(1);
        
        // 输出当前行
        Console.WriteLine(string.Join(", ", currentRow));
        
        // 创建新列表存储下一行的中间元素
        List<int> nextRow = new List<int>();
        for (int j = 0; j < currentRow.Count - 1; j++)
        {
            nextRow.Add(currentRow[j] + currentRow[j + 1]);
        }
        // 更新当前行为下一行的中间元素,下一轮循环会补首尾的1
        currentRow = nextRow;
    }
}

修复说明

  • 每次循环创建全新的nextRow列表,彻底避免旧列表元素累积的问题。
  • 精简初始逻辑,直接从帕斯卡三角的第一行开始构建,去掉不必要的空列表输出。
  • 用currentRow和nextRow明确区分当前行与下一行,逻辑更清晰易懂。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.15 15:55:56