费氏序列:基本是以兔子为模型的,这里暂且不考虑公母啊,怎么生的问题。就是有一只兔子,每个月生一只兔子,小兔子一个月后又可以投入生产,这样两个月后就有2只兔子,三个月后有3只兔子,四个月后就有5只兔子。。。。。。
由此可以列出一串数字:1 , 1, 2, 3 ,5 ,8 ,13 ..........
简单归纳一下可以发现当第一个月和第二个月的时候都只有1只兔子,之后的兔子数目为前两个月的兔子之和,也就是之前本月的兔子数,加上上个月的兔子生的小兔子数。
简单归纳为:F(0) = F(1) = 1;
(n>=2)时 , F(n) = F(n-1) + F(n-2);
由此可知,有代码实现基本有两种思路:1.数组 2.递归 代码量不大,直接合二为一,参考如下code:
#include<stdio.h>
#define MAX 30
int fabo(int n)
{
if(n==1||n==0)
return 1;
else
return fabo(n-1)+fabo(n-2);
}
int main()
{
int i,f;
int Fi[MAX] = {0};
Fi[0] = 0;
Fi[1] = 1;
for(i=2;i<MAX;i++)
Fi[i] = Fi[i-1]+Fi[i-2];
for(i=0;i<MAX;i++)
printf("Fi[%d] = %d\n",i,Fi[i]);
f = fabo(MAX-1);
printf("Fabo[MAX-1] = %d\n",f);
return 0;
}