在700多年前,意大利有一位著名数学家斐波那契在他的《算盘全集》一书中提出了这样一道有趣的兔子繁殖问题。
如果有一对小兔,每一个月都生下一对小兔,而所生下的每一对小兔在出生后的第三个月也都生下一对小兔。那么,由一对兔子开始,满一年时一共可以繁殖成多少对兔子?
用列举的方法可以很快找出本题的答案:
第一个月,这对兔子生了一对小兔,于是这个月共有2对(1+1=2)兔子。
第二个月,第一对兔子又生了一对兔子。因此共有3对(1+2=3)兔子。
到第三个月,第一对兔子又生了一对小兔而在第一个月出生的小兔也生下了一对小兔。所以,这个月共有5对(2+3=5)兔子。
到第四个月,第一对兔子以及第一、二两个月生下的兔子也都各生下了一对小兔。因此,这个月连原先的5对兔子共有8对(3+5=8)兔子。
……
月份 | 大兔对数量 | 一月大的小兔对数量 | 二月大的小兔对数量 | 兔子总对数 |
一月 | 1 | 1 | 0 | 2 |
二月 | 1 | 1 | 1 | 3 |
三月 | 2 | 2 | 1 | 5 |
四月 | 3 | 3 | 2 | 8 |
五月 | 5 | 5 | 3 | 13 |
六月 | 8 | 8 | 5 | 21 |
七月 | 13 | 13 | 8 | 34 |
八月 | 21 | 21 | 13 | 55 |
九月 | 34 | 34 | 21 | 89 |
十月 | 55 | 55 | 34 | 144 |
十一月 | 89 | 89 | 55 | 233 |
十二月 | 144 | 144 | 89 | 377 |
规律:后面一个月的兔子数量是前两个月的兔子数量和
代码:
var arr=[2,3]; //初始化一月和二月的兔子对数
for(var i=2; i<13; i++){
arr[i]=arr[i-1]+arr[i-2];
}
for(var i=0; i<12; i++){
document.write((i+1)+'月份'+'的兔子总对数'+':'+arr[i]+'<br>');
}
结果:
1月份的兔子总对数:2
2月份的兔子总对数:3
3月份的兔子总对数:5
4月份的兔子总对数:8
5月份的兔子总对数:13
6月份的兔子总对数:21
7月份的兔子总对数:34
8月份的兔子总对数:55
9月份的兔子总对数:89
10月份的兔子总对数:144
11月份的兔子总对数:233
12月份的兔子总对数:377