在学习斐波那契数列的过程中,使用了迭代和递归这两种方法来实现。感觉使用递归确实很方便,代码也很简单,但是通过对程序进行检测分析后发现,使用递归的程序的运行时间大大不如迭代,迭代几毫秒就能解决的事,递归耗费大量的时间却还迟迟还算不出来。综合分析,慎用递归!!!
test1:使用迭代来显示斐波那契数列
int main()
{
int i;
int a[30];
printf("迭代显示斐波那契数列:\n");
a[0] = 0;
a[1] = 1;
printf("%d ", a[0]);
printf("%d ", a[1]);
for (i = 2; i < 30; i++)
{
a[i] = a[i - 1] + a[i - 2];
printf("%d ", a[i]);
}
printf("\n");
return 0;
}
test2:使用递归来显示斐波那契数列
int Fbi(int i) /* 斐波那契的递归函数 */
{
if (i < 2)
return i == 0 ? 0 : 1;
return Fbi(i - 1) + Fbi(i - 2); /* 这里Fbi就是函数自己,等于在调用自己 */
}
int main()
{
int i;
printf("递归显示斐波那契数列:\n");
for (i = 0; i < 30; i++)
printf("%d ", Fbi(i));
return 0;
}