🐇 一道古典数学问题,揭示了自然界最神秘的数字规律!本文将带你深入探索兔子繁殖背后的斐波那契数列奥秘。
看在每天坚持分享的份上,点个关注吧(づ ̄ 3 ̄)づ
关注是我更新的动力 ̄︶ ̄∗ ̄︶ ̄∗)
作者会分享更多涉及到各种编程语言的有趣知识!(^∀^●)ノシ
目录
版权声明:本文代码原创部分由CSDN博主「坐路边等朋友」提供,技术解析部分原创,转载请注明出处。
问题描述:兔子繁殖的数学规律
一对兔子从出生后第3个月起每月生一对新兔子,新兔子同样从第3个月开始繁殖。假设所有兔子不死,求30个月内每月兔子总对数。
兔子成长阶段定义:
-
小兔子:不满1个月
-
中兔子:满1个月但不满2个月
-
老兔子:满3个月及以上
问题分析:斐波那契数列的浮现
通过观察前7个月的数据,发现兔子总数遵循特定规律:
月份 |
小兔对数 |
中兔对数 |
老兔对数 |
总对数 |
数学规律 |
---|---|---|---|---|---|
1 |
1 |
0 |
0 |
1 |
fib(1) |
2 |
0 |
1 |
0 |
1 |
fib(2) |
3 |
1 |
0 |
1 |
2 |
fib(3) |
4 |
1 |
1 |
1 |
3 |
fib(4) |
5 |
2 |
1 |
2 |
5 |
fib(5) |
6 |
3 |
2 |
3 |
8 |
fib(6) |
7 |
5 |
3 |
5 |
13 |
fib(7) |
关键发现:每月兔子总数 = 前两月兔子总数之和
即斐波那契数列:$fib(n) = fib(n-1) + fib(n-2)$
算法设计:迭代求解斐波那契数列
基础解法:三变量迭代法
def rabbit_count_basic(months=30):
fib1, fib2 = 1, 1 # 初始值:第1月和第2月
print(f"{'月份':<5}{'兔子对数':>10}")
print(f"{1:<5}{fib1:>10}")
print(f"{2:<5}{fib2:>10}")
for month in range(3, months+1):
fib = fib1 + fib2 # 当前月 = 前两月之和
print(f"{mo