5
社区成员
发帖
与我相关
我的任务
分享
一月有一对新生的兔子,二月这对兔子成熟,三月可产下另一对兔子,所以三月就有两对兔子;四月因为上月新生的兔子还没成熟所以由一月降生二月成熟的兔子继续生育,四月就有2+1=3对对兔子;五月三月的兔子成熟可以产一对兔子,二月成熟的兔子还可以继续生育,所以五月有3+2=5对兔子;六月四月的兔子成熟了可以产一对兔子,三月的兔子成熟可产一对兔子,二月的兔子还可产一对兔子,所以六月有5+3=8对兔子,以此类推,从三月开始,每个月产下的兔子对数是前两个月兔子对数的和。
建立模型:
当前月兔子对数 = 上一个兔子对数 + 上一个的上一个月兔子对数 (当前月份大于等于3)
图解:

循环实现:
#include<stdio.h>
const int N=20;
int main()
{
int a[N];
a[1]=1;
a[2]=1;
for(int i=3;i<=12;i++)
{
a[i]=a[i-1]+a[i-2];
}
printf("%d",a[12]);
return 0;
}
递归实现:
#include<stdio.h>
int Fibonacci(int n)
{
if(n<=0) return -1;
else if(n==1) return 1;
else if(n==2) return 1;
else if(n>2) return Fibonacci(n-1)+Fibonacci(n-2);
}
int main()
{
int n=12;
int fib = Fibonacci(n);
if(fib==-1) printf("输入错误,请重新输入。");
else printf("%d",fib);
return 0;
}