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

为什么我的DO-WHILE循环生成斐波那契数列未按预期运行?

代码异常原因
  • 核心死循环问题:你嵌套了for循环和do-while循环,其中for循环的终止条件永远无法满足。初始化时i=2、ToInfinity=3,每执行一次for循环体,ToInfinity就会加1,i每次循环结束也会自增1,所以i < ToInfinity的判断会永远成立,程序一直卡在for循环内不断往列表加元素,外层do-while的终止判断n3 <= limit完全没有执行机会,直到列表占用内存超出限制抛出错误。
  • 逻辑冗余:生成斐波那契序列不需要双层循环,单层循环就可以完成逻辑。
  • 计数错误:你已经提前向列表添加了0和1两个初始值,terms初始值却设为0,最终统计的项数会比实际少2。
  • 语法错误:最后输出字符串中占位符写为{1],右花括号错写成了方括号,运行时会抛出格式异常。
  • 输出逻辑错误:直接对List<int>类型执行Console.WriteLine只会输出类型名称,不会打印序列的具体内容。
修复后可正常运行的代码
int n1 = 0, n2 = 1, n3 = 0, limit;
List<int> fibonaccisequence = new List<int>();

Console.Write("Enter the limiting value: ");
limit = Convert.ToInt32(Console.ReadLine());

// 处理边界情况,限制值小于0直接返回
if (limit < 0)
{
    Console.WriteLine("Limit value cannot be negative");
    return;
}

fibonaccisequence.Add(n1);
if (limit == 0)
{
    Console.WriteLine(string.Join(", ", fibonaccisequence));
    Console.WriteLine("There are {0} terms up to {1}.", fibonaccisequence.Count, limit);
    return;
}
fibonaccisequence.Add(n2);

while (true)
{
    n3 = n1 + n2;
    if (n3 > limit)
    {
        break;
    }
    fibonaccisequence.Add(n3);
    n1 = n2;
    n2 = n3;
}

Console.WriteLine(string.Join(", ", fibonaccisequence));
Console.WriteLine("There are {0} terms up to {1}.", fibonaccisequence.Count, limit);

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 13:36:02