1.递归和非递归分别实现求第n个斐波那契数。:1 1 2 3 5 8 13 ……
(1)递归:
int Fib(int num)
{
if(num<2){
return 1;
}
return Fib(num-1)+Fib(num-2);
}
int main()
{
int n=0;
printf("please input the num\n");
scanf("%d",&n);
int ret=Fib(n);
printf("%d\n",ret);
return 0;
}
(2)非递归:
int Fib(int num)
{
int first=1;
int second=1;
int third=first;
while(num>2)
{
third=first+second;
first=second;
second=third;
num--;
}
return second;
}
int main()
{
int n=0;
printf("please input the num\n");
scanf("%d",&n);
int ret=Fib(n);
printf("%d\n",ret);
return 0;
}
总结:采用递归的方法运行速度不如非递归,因为每一次运行都会把之前算过的数据重新算一遍。