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

Python斐波那契序列代码异常:输入大于6时循环无法终止求助

问题分析

你的代码核心问题是不必要的for循环嵌套,导致逻辑混乱:

  • while循环本应负责判断当前斐波那契数是否小于输入值n,但内部的for循环会强制执行n-1次迭代——哪怕t1已经超过n,for循环也不会提前终止;
  • 你观察到的“输入7时循环持续运行”,本质是for循环固定执行6次(range(1,7)),哪怕t1变成8后仍会继续执行剩余迭代,让你误以为是无限循环。
修复后的代码

去掉多余的for循环,只用while循环控制迭代逻辑,每次先判断t1是否小于n,再打印并更新数值:

n = int(input())
t1 = 1
t2 = 1
while t1 < n:
    print(t1)
    result = t1 + t2
    t1 = t2
    t2 = result
输入7时的执行验证
  1. 初始t1=1 <7 → 打印1,更新t1=1,t2=2
  2. t1=1 <7 → 打印1,更新t1=2,t2=3
  3. t1=2 <7 → 打印2,更新t1=3,t2=5
  4. t1=3 <7 → 打印3,更新t1=5,t2=8
  5. t1=5 <7 → 打印5,更新t1=8,t2=13
  6. 此时t1=8 >=7 → 退出while循环,输出结果为1 1 2 3 5,符合预期。
边界情况优化(可选)

如果需要处理n=1或n=2的场景,可以添加初始判断:

n = int(input())
if n <= 1:
    print("没有小于输入值的斐波那契数")
else:
    t1 = 1
    t2 = 1
    while t1 < n:
        print(t1)
        result = t1 + t2
        t1 = t2
        t2 = result

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.23 09:42:37