题目描述

这是一个有趣的古典数学问题,著名意大利数学家Fibonacci曾提出一个问题:有一对小兔子,从出生后第3个月起每个月都生一对兔子。小兔子长到第3个月后每个月又生一对兔子。按此规律,假设没有兔子死亡,第一个月有一对刚出生的小兔子,问第n个月有多少对兔子?

输入

输入月数n(1<=n<=44)。

输出

输出第n个月有多少对兔子。

样例输入Copy

3

样例输出Copy

2

解题思路

1.兔子繁殖问题考察斐波那契数列
2.我们要了解斐波那契数列的特点
f(n)=f(n-1)+f(n-2),即1 1 2 3 5 8 13…

程序源码

法1:
#includeint main(){int n,sum;scanf("%d",&n);if(n<3){//sum=1;//当月数小于3时,兔子对数为1;printf("%d",sum);//}//else{//int n1=1,n2=1;//for(int i=3;i<=n;i++){//sum=n1+n2;//当月数大于3时,执行第三项为前两项的和n1=n2;//将第二个月的值赋给第一个月,依次类推n2=sum;//将第三个月的值赋给第二个月,依次类推}//printf("%d",sum);}return 0;}
法2(用数组知识解答):
#includeint main(){int f[20]={1,1};int n;scanf("%d",&n);if(n<3) printf("1");else{for(int i=2;i<n;i++){f[i]=f[i-2]+f[i-1];}printf("%d",f[n-1]);}return 0;}

运行结果

输入:20输出:6765

文案分享

应无所往,而生其心。