题目描述 |
这是一个有趣的古典数学问题,著名意大利数学家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:
#include<stdio.h>
int 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(用数组知识解答):
#include<stdio.h>
int 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
文案分享
应无所往,而生其心。