/*
7-27 兔子繁衍问题 (15 分)
一对兔子,从出生后第3个月起每个月都生一对兔子。小兔子长到第3个月后每个月又生一对兔子。假如兔子都不死,请问第1个月出生的一对兔子,至少需要繁衍到第几个月时兔子总数才可以达到N对?
输入格式:
输入在一行中给出一个不超过10000的正整数N。
输出格式:
在一行中输出兔子总数达到N最少需要的月数
*/
/*
斐波拉契数列
我自己推了一遍
就是a[大]=a[中],a[中]=a[小],a[小]=a[大];
根据最后的结果还是F(n)=F(N-1)+F(N-2)这时候可以用递推
大 中 小
第一个月 1 a[小]=1,a[中]=0,a[大]=0
第二个月 1 a[小]=a[大],a[中]=a[小], a[大]=a[大]
第三个月 1 1 a[大]=a[中]+1,
第四个月 1 1 1
第五个月 2 1 2
*/
//用数列求出每个月的大,中,小兔子
#include<stdio.h>
int main(void)
{
int n;//输入第几个月
scanf("%d",&n);
int a[100]={0},b[100]={0},c[100]={0};
a[1]=0,b[1]=0,c[1]=1;
for(int i=2;i<=n;i++)
{
a[i] =a[i-1]+b[i-1];
b[i]=c[i-1];
c[i]=a[i];
}
printf("第%d月\n大兔子:%d\n,中兔子:%d\n,小兔子:%d",n,a[n],b[n],c[n]);
printf("\n总数为:%d",a[n]+b[n]+c[n]);
}
/*
7-27 兔子繁衍问题 (15 分)
一对兔子,从出生后第3个月起每个月都生一对兔子。小兔子长到第3个月后每个月又生一对兔子。假如兔子都不死,请问第1个月出生的一对兔子,至少需要繁衍到第几个月时兔子总数才可以达到N对?
输入格式:
输入在一行中给出一个不超过10000的正整数N。
输出格式:
在一行中输出兔子总数达到N最少需要的月数
*/
/*
斐波拉契数列
我自己推了一遍
就是a[大]=a[中],a[中]=a[小],a[小]=a[大];
根据最后的结果还是F(n)=F(N-1)+F(N-2)这时候可以用递推
大 中 小
第一个月 1 a[小]=1,a[中]=0,a[大]=0
第二个月 1 a[小]=a[大],a[中]=a[小], a[大]=a[大]
第三个月 1 1 a[大]=a[中]+1,
第四个月 1 1 1
第五个月 2 1 2
*/
//用递推公式求,及递归
#include<stdio.h>
int Fabonnaci(int a);
int main(void)
{
int n;
scanf("%d",&n);
int i=1;
while(1)
{
if(Fabonnaci(i)>=n)
{
printf("%d",i);
break;
}
else
{
i++;
}
}
}
int Fabonnaci(int a)
{
if(a==1||a==2)
return 1;
else
return Fabonnaci(a-1)+Fabonnaci(a-2);
}