古典問題:兔子出生後第3個月起每個月都生一對兔子,小兔子長到第三個月後每個月又生一對兔子,假如兔子都不死,問兩年內每個月的兔子總數為多少?(斐波那切數列)
阿新 • • 發佈:2019-02-06
分析
第一個月—————–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;
}