著名的意大利数学家斐波那契(Fibonacci)在他的著作《算盘书》中提出了一个“兔子问题”:假定小兔子一个月就可以长成大兔子,而大兔子每个月都会生出一对小兔子。(即兔子从生后第三个月才会生小兔子。)如果年初养了一对小兔子,问到年底时将有多少对兔子? (当然得假设兔子没有死亡而且严格按照上述规律长大与繁殖)。
1、分析问题。
我们可以根据题意列出表1来解决这个问题:
表1兔子问题分析表
| 1月 | 2月 | 3月 | 4月 | 5月 | 6月 | 7月 | 8月 | 9月 | 10月 | 11月 | 12月 |
小兔 | 1 |
| 1 | 1 | 2 | 3 | 5 | 8 | 13 | 21 | 34 | 55 |
大兔 |
| 1 | 1 | 2 | 3 | 5 | 8 | 13 | 21 | 34 | 55 | 89 |
合计 | 1 | 1 | 2 | 3 | 5 | 8 | 13 | 21 | 34 | 55 | 89 | 144 |
这个表格虽然解决了斐波那契的兔子问题(年底时兔子的总数是144只),但仔细观察一下这个表格,你会发现兔子的数目增长得越来越快,如果时间再长,只用列表的方法就会有困难。(例如,你愿意用列表的方法求出5年后兔子的数目吗?)我们需要研究表中的规律,找出一般的方法,去解决这个问题。
1 #include2 using namespace std; 3 int fib(int n){ 4 if(n==1||n==0)return 1; 5 else return (fib(n-1)+fib(n-2)); 6 } 7 int main(){ 8 cout<<"请输入月数为:"< >n; 11 cout<<"兔子总数为:"< <