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时的执行验证
- 初始
t1=1 <7→ 打印1,更新t1=1,t2=2 t1=1 <7→ 打印1,更新t1=2,t2=3t1=2 <7→ 打印2,更新t1=3,t2=5t1=3 <7→ 打印3,更新t1=5,t2=8t1=5 <7→ 打印5,更新t1=8,t2=13- 此时
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
相关产品推荐
相关产品推荐

