对于斐波那契数列的两种求法的效率对比
</pre><pre name="code" class="cpp">#include<stdio.h>
int main(){
int fib_dgui(int n);//递归算法
int fib(int n);//循环算法
int ret = 0, n;
printf("请输入要求的斐波那契数-> n = ");
scanf("%d", &n);
int start, finish;
start = clock();
ret = fib_dgui(n);
finish = clock();
printf("%d的斐波那契数为->%d\n", n, ret);
printf("递归调用的计算时间为->%f\n", (double)(finish - start));
start = clock();
ret = fib(n);
finish = clock();
printf("%d的斐波那契数为->%d\n", n, ret);
printf("函数循环的计算时间为->%f\n", (double)(finish - start));
system("pause");
return 0;
}
int fib(int n){
int i, fib_ret1 = 1, fib_ret2 = 1, sum = 0;
for (i = 3; i <= n; i++){
sum = fib_ret1 + fib_ret2;
fib_ret1 = fib_ret2;
fib_ret2 = sum;
}
return sum;
}
int fib_dgui(int n){
if (n <= 2)return 1;
else return fib_dgui(n - 1) + fib_dgui(n - 2);
}