1202年,意大利数学家斐波那契(Fibonacci)提出了一个有趣的问题:
假设一对刚出生的小兔子,一个月后长大成熟,成熟后每个月都会生一对新的小兔子。问:从一对刚出生的小兔子开始,第 n 个月共有多少对兔子?
🐰 第1月:1 对(刚出生)
🐰🐰 第2月:1 对(长大了,还没生)
🐰🐰 + 👶 第3月:2 对(老兔生了一对新兔)
🐰🐰 + 👶🐰 + 👶 第4月:3 对(老兔又生一对,第3月出生的长大)
🐰🐰 + 🐰🐰 + 👶🐰 + 👶 + 👶 第5月:5 对
1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, ...
你发现规律了吗?每一项 = 前两项之和!
F(n) = F(n-1) + F(n-2)
这就是著名的斐波那契数列,也是递推法最经典的例子。我们不需要模拟兔子的繁殖过程,只要找到递推关系,就能快速算出任意月份的兔子数!
💡 为什么 F(n) = F(n-1) + F(n-2)?
第 n 个月的兔子由两部分组成:
① 上个月就有的兔子 → F(n-1) 对(兔子不会死)
② 这个月新出生的兔子 → 只有成熟兔子才能生,而两个月前就存在的兔子现在都已成熟 → F(n-2) 对
所以 F(n) = F(n-1) + F(n-2),这就是递推关系!