递归实现:
#include<stdio.h>
int fib(int n)
{
if(n <= 2)
return 1;
else
{
count ++;
return fib(n - 1) + fib(n - 2);
}
//return fib(10);
}
int main ()
{
printf("%d\n",fib(10));
return 0;
}
非递归实现:
#include<stdio.h>
int fib1(int n)
{
int n1 = 1;
int n2 = 1;
int ret = 1;
if(n <= 2)
{
return 1;
}
else
{
int i = 3;
for(i = 3;i <= n;i ++)
{
ret = n1 + n2;
n1 = n2;
n2 = ret;
}
return ret;
}
}
int main()
{
printf("%d\n",fib1(4));
return 0;
}
斐波那契数用函数实现效率更高。