第一种解法:递归,效率很低
#include <stdio.h>
long long facbonacci(int n)
{
if(n == 0)
return 0;
if(n == 1)
return 1;
return facbonacci(n-1)+facbonacci(n-2);
}
int main(void)
{
int n;
int i;
for(i = 0; i < 8; i++)
{
n = facbonacci(i);
printf("%d\t", n);
}
return 0;
}
第二种解法: 用for循环的方式,时间复杂度O(n)
#include <stdio.h>
long long feibonacci(unsigned n)
{
int result[] = {0,1};
if(n < 2)
return result[n];
long fbione = 0;
long fbitwo = 1;
long fbiN = 0;
int i;
for(i = 2; i <= n; i++)
{
fbiN = fbione + fbitwo;
fbione = fbitwo;
fbitwo = fbiN;
}
return fbiN;
}
int main(void)
{
printf("%d\n", feibonacci(5));
return 0;
}