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

Python递归函数疑问:斐波那契数列递归实现原理咨询

递归实现斐波那契数列代码解析

先把代码整理成规范格式:

def fib(x):
    if x == 0:
        return 0
    elif x == 1:
        return 1
    else:
        return fib(x-1) + fib(x-2)

for i in range(8):
    print(fib(i), end=",")

先搞懂递归到底是什么

递归和索引完全没关系,它的核心是函数自己调用自己——把一个大问题拆成和它逻辑一致的小问题,直到碰到没法再拆的「终止条件」,再从最底层的结果往上汇总,得到最终答案。

逐行拆解这段代码

  1. 函数的终止条件
    • fib(x)这个函数的作用是计算第x项斐波那契数。
    • 当x是0或者1时,直接返回固定值:fib(0)=0,fib(1)=1——这就是递归的「刹车」,没有它函数会无限调用自己直到程序崩溃。
  2. 递归计算逻辑
    • 当x大于1时,根据斐波那契数列的规则,第x项等于前两项的和,所以用fib(x-1)拿到第x-1项的值,fib(x-2)拿到第x-2项的值,两者相加就是第x项的结果。
  3. 循环打印的作用
    • range(8)会生成0到7的整数,循环依次把每个数传给fib()函数,计算出对应项的斐波那契数,最后用逗号连起来打印。

拿个实际例子走一遍流程

比如计算fib(3):

  1. 因为3不是0也不是1,所以需要计算fib(2) + fib(1)
  2. 先算fib(2):2也不是0或1,得计算fib(1) + fib(0)
    • fib(1)直接返回1,fib(0)直接返回0,所以fib(2)=1+0=1
  3. fib(1)直接返回1
  4. 最后fib(3)=1+1=2

运行这段代码后,输出结果是:0,1,1,2,3,5,8,13,

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 16:25:24