分析
第一个月—————–1
第二个月—————–1
第三个月—————–2
第四个月—————–3
第五个月—————–5
第六个月—————–8
第七个月—————–13
… …
从中发现,从第三个月开始,前两个月兔子数之后为第三个兔子总数。
符合斐波那切数列 F(n) = F(n-1) + F(n-2)
#include<cstdio>
#include<iostream>
using namespace std;
int di(int x)
{
if(x == 1 || x == 2)
return 1;
return di(x-1) + di(x-2);
}
int main()
{
int sum;
for(int i=1; i<25; i++){
sum = di(i)*2;
printf("%d\n", sum);
}
return 0;
}
优化版
#include<cstdio>
#include<iostream>
using namespace std;
int di(int a, int b, int n)
{
int f = a + b;
if(n > 3)
int f = di (b, a + b, n-1);
return f;
}
int main()
{
for(int i=1; i<3; i++){
printf("2\n");
}
for(int i=3; i<25; i++){
printf("%d",2 * di(1, 1, i));
}
return 0;
}