什么是递归?
要说到递归如果不说栈的话,我觉得有点不合适,递归特点就是不断的调用同一个函数,如果这个函数没有一个递归界限,那么就是死循环了。所以讨论递归,就必须要讨论递归的界限,就是限定这个递归调用多少次。
我们先来看一个例子:
#include "stdio.h"
int digui(unsigned long count )
{
if(count > 0){
count --;
printf("%d \n",count);
digui(count);
}
return 1;
}
int main()
{
digui(10);
return (100);
}
这个递归函数的限定判读是:
if(count > 0);
所以,它的调用顺序可以用下面这个图示来说明:
这个过程叫做递去,也就是压栈的过程,既然有压栈的过程,那么就有出栈的过程,出栈的过程就是: if(count > 0) 判断不成功后,就会出栈了,如下图所示:
总的来说递归就是不断地压栈和出栈的过程,现在大家对递归的原理有深入的理解了吧!
|