用递归方式实现,函数简单,但每次都得函数调用,拖慢运行速度。所以更好的方式是用迭代的方式来实现。源代码如下:
fib(n) = { 1 ,n <= 2 ;
fib(n-1) + fib(n-2) , n > 2 }
//迭代法
#include<stdio.h>
#include<windows.h>
int myfib(int n)
{
int first = 1;
int second = 1;
int current =1;
while(n > 2)
{
current = first + second; //迭代
first = second;
second = current;
n--;
}
return current;
}
int main()
{
int n = 0;
printf("Please enter n:");
scanf("%d",&n);
printf("fib: %d -> %d\n" ,n, myfib(n));
system("pause");
return 0;
}
----------
//递归:调用次数多,递归过程大
int fib(int n)
{
if(n <= 2)
{
return 1;
}
return fib(n-1)+fib(n-2);//函数内部调用自己
}
int main()
{
printf("%d\n ",fib(5));
system("pause");
return 0;
}