1.递归
int Fib(int n)
{
if(n==0 || n==1)
{
return 1;
}
else if(n>=2)
{
return Fib(n-1)+Fib(n-2);
}
}
2.线性算法:
long long Fib(long long n)
{
int i;
long long last,NextToLast,Answer;
if(n==0 || n==1)
return 1;
last=NextToLast=1;
for(i=2;i<=n;i++)
{
Answer=last+NextToLast;
NextToLast=last;
last=Answer;
}
return Answer;
}
3.数组实现:
#include <stdio.h>
#define N 100
int main()
{
int Fib[N]={1,1};
int i;
for(i=2;i<30;i++)
{
Fib[i]=Fib[i-1]+Fib[i-2];
printf("%d\t%d\n",i,Fib[i]);
}
}