引言:为什么斐波那契是编程入门必修课
斐波那契数列(Fibonacci Sequence)是一个经典的数学序列:0, 1, 1, 2, 3, 5, 8, 13, 21, 34, ...,定义为 F(0) = 0, F(1) = 1, F(n) = F(n-1) + F(n-2)。它不仅是数学之美,更是编程思维的试金石。掌握它的多种实现方式,意味着你真正理解了循环与递归、时间复杂度与空间复杂度、记忆化与动态规划、生成器与内存优化。
方法一:循环迭代法(推荐)
这是最实用、最高效的写法。
def fib_iter(n):
a, b = 0, 1
for _ in range(n):
a, b = b, a + b
return a
优点
- 时间复杂度:O(n)
- 空间复杂度:O(1)
- 代码简洁,逻辑清晰
- 支持大数计算(如 fib_iter(10000) 不会爆栈)
使用建议
- 日常使用首选!
- 适用于绝大多数场景,尤其是 n 较大时
方法二:朴素递归法(反面教材)
def fib_recursive(n):
if n <= 1:
return n
return fib_recursive(n - 1) + fib_recursive(n - 2)
问题
- 时间复杂度:O(2^n),指数级增长,效率极低
- 空间复杂度:O(n),递归深度
- 存在大量重复计算(如 fib_recursive(5) 会重复计算 fib_recursive(3) 两次)
结果
- n > 30 就明显卡顿
- 仅用于理解递归思想,不要在生产环境使用
方法三:记忆化递归(动态规划思想)
from functools import lru_cache
@lru_cache(maxsize=None)
def fib_memo(n):
if n <= 1:
return n
fib_memo(n - ) + fib_memo(n - )


