9. 斐波那契数列
斐波那契数列:1, 1, 2, 3, 5, 8, 13, 21, 34, ... 每一项等于前两项之和。经典的"兔子产子"问题就是斐波那契数列的起源。
兔子产子问题
一对兔子从第 3 个月起每月生一对兔子,小兔子长到第 3 个月后也每月生一对。假设兔子不死,30 个月内每个月的兔子对数是多少?
python
fib1 = 1 # 第 1 个月
fib2 = 1 # 第 2 个月
print(f"{fib1} {fib2}", end=" ")
i = 3
while i <= 30:
fib = fib1 + fib2 # 当前月 = 前两个月之和
print(fib, end=" ")
if i % 8 == 0:
print() # 每 8 个换行
fib2 = fib1 # 为下一个月做准备
fib1 = fib
i += 1
▶ 运行结果:
输出
1 1 2 3 5 8 13 21
34 55 89 144 233 377 610 987
1597 2584 4181 6765 10946 17711 28657 46368
75025 121393 196418 317811 514229 832040
💡 迭代法核心
用两个变量 fib1 和 fib2 保存前两个月的值,每次循环更新它们。这种"滚动更新"的方式只需要常数级空间,比递归高效得多。