常规的迭代的实现方法:
#include <stdio.h>
int main()
{
int i;
int a[40];
a[0] = 0;
a[1] = 1;
printf("%d\n",a[0]);
printf("%d\n",a[1]);
for(i = 0;i < 40;i++)
{
a[i] = a[i - 1] + a[i - 2];
printf("%d\n",a[i]);
}
return 0;
}
用递归的方法实现
#include <stdio.h>
int function(int i)
{
if(i < 2)
{
return i = 0?0:1;
}
return function(i - 1) + function(i - 2);
}
int main()
{
int i ;
for(i = 0;i < 40;i++)
{
printf("%d\n",function(i));
}
return 0;
}
很明显递归 的方法更为简洁
那么递归和栈又是什么关系呢?
递归过程退回的顺序是它前行顺序的逆序,在退回的过程中,可能要执行某些操作,包括在存储前行过程的某些数据
显然很符合栈这样的数据结构,因此,编译器使用栈实现递归就没什么违和感了。