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

请问如何理解下述Python实现的斐波那契数列计算代码?

斐波那契数列Python代码逻辑讲解
def fibonacci(n):
    if 0 <= n <= 1:
        return n

    n_minus1, n_minus2 = 1, 0
    result = None
    for f in range(n - 1):
       result = n_minus2 + n_minus1
       n_minus2 = n_minus1
       n_minus1 = result

    return result

前置说明

通用的斐波那契数列定义规则如下:

  • fib(0) = 0
  • fib(1) = 1
  • 当n≥2时,fib(n) = fib(n-1) + fib(n-2)
    这段代码采用迭代法实现计算,没有使用递归,执行效率更高。

逐段拆解逻辑

  • 边界判断:if 0 <= n <= 1: return n
    直接匹配数列前两项的定义,输入n为0直接返回0,n为1直接返回1,不需要走后续计算逻辑。
  • 变量初始化:n_minus1, n_minus2 = 1, 0
    n_minus2存储fib(n-2)的初始值,对应fib(0)=0;n_minus1存储fib(n-1)的初始值,对应fib(1)=1,result变量用来暂存每一轮的计算结果。
  • 循环计算:for f in range(n - 1):
    循环执行n-1次,每次完成一轮递推:
    1. 计算当前项值:result = n_minus2 + n_minus1,符合fib(n) = fib(n-1) + fib(n-2)的规则
    2. 变量滚动更新:把n_minus2更新为上一轮的n_minus1,n_minus1更新为刚算出来的当前项值,为下一轮计算做准备
  • 循环结束后直接返回result,就是第n项的斐波那契数值。

实际执行示例(以n=4为例)

我们可以手动跑一遍流程验证结果:
n=4大于1,走后续逻辑,初始n_minus1=1,n_minus2=0,循环次数为4-1=3次

  1. 第1次循环:result=0+1=1 → n_minus2=1,n_minus1=1
  2. 第2次循环:result=1+1=2 → n_minus2=1,n_minus1=2
  3. 第3次循环:result=1+2=3 → n_minus2=2,n_minus1=3
    循环结束返回3,正好符合fib(4)=3的正确结果。

代码优势

迭代实现避免了递归版本大量重复计算、n过大时栈溢出的问题,时间复杂度为O(n),空间复杂度为O(1),实用性更强。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 09:54:05