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

求教Python斐波那契程序中while循环段的运行逻辑

斐波那契代码while循环段执行逻辑拆解

进入循环前的初始状态

当用户输入的正整数nterms大于1时,代码会跳过nterms == 1的分支进入else块,此时三个核心变量的初始值为:

  • n1 = 1:存储当前待输出的斐波那契数列项
  • n2 = 1:存储当前项的下一项初始值
  • count = 0:计数器,记录已经输出的斐波那契数个数

循环的判定规则while count < nterms逻辑很直白:只要已经输出的数的个数还没达到用户要求的数量,就重复执行循环内的逻辑。

循环内逐行作用说明

循环体一共5行,逻辑完全贴合斐波那契数列“后项等于前两项之和”的递推规则,逐行作用如下:

  1. print(n1)
    直接打印当前存储的待输出数列项。第一次进入循环时n1是初始值1,因此打印的第一个数为1。
  2. nth = n1 + n2
    按照递推规则,计算出当前两项之和,也就是数列的下一个新项,暂存在nth变量里。第一次执行这行时n1=1、n2=1,计算得到nth=2。
  3. n1 = n2
    做变量值的滚动前移:原来存的下一项n2,会成为下一轮循环里待输出的当前项。第一次执行完这行,n1会从初始的1更新为n2存储的1。
  4. n2 = nth
    把上一步算出来的新项nth,赋值为下一轮的“下一项”,给下一轮的求和计算做准备。第一次执行完这行,n2会从初始的1更新为刚算出的2。
  5. count += 1
    计数器自增1,代表已经成功输出了1个斐波那契数。第一次执行完这行,count会从0变成1。

递推生成的运行逻辑

这个实现没有提前存储整个数列,而是靠两个变量滚动更新来生成所有项,本质是个“滑动窗口”的思路:

这个版本的斐波那契数列从1、1开始,从第三项开始每一项等于前紧邻两项的和。每次循环只做四件事:输出当前项、算出下一个新项、把两个存储位整体往后挪一位、计数加1,直到输出够要求的项数就自动停。

我们拿输入nterms=5举例,每轮循环执行完的状态如下,可以直观看到滚动过程:

  • 第1轮结束:输出1,n1=1,n2=2,count=1
  • 第2轮结束:输出1,n1=2,n2=3,count=2
  • 第3轮结束:输出2,n1=3,n2=5,count=3
  • 第4轮结束:输出3,n1=5,n2=8,count=4
  • 第5轮结束:输出5,n1=8,n2=13,count=5

当第5轮结束时count=5,和nterms的值相等,count < nterms的判定条件不成立,循环直接终止,最终打印出的数列是1、1、2、3、5,正好是要求的5项。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 02:24:19