递归的定义:
在函数或子过程的内部,直接或者间接地调用自己的算法。 注明:1.在使用递归策略时,必须有一个明确的递归结束条件,称为递归出口。 2. 局部量等开辟了栈来存储。递归次数过多容易造成栈溢出等。所以一般不提倡用递归算法设计程序,递归算法执行效率较低。 实例:递归实现阶乘 #include <stdio.h>
int recursive(int i)
{
int sum;
if(0 == i)
return 1;
else
sum = i * recursive(i - 1); //执行的结果就是5*4*3*2*1
return sum;
}
int main()
{
unsigned int temp;
temp = recursive(5);
printf("temp = %d\n",temp);
} 结果: liuzj@ET302Buildver:~/zhanghong/make$ vim digui.c
liuzj@ET302Buildver:~/zhanghong/make$ gcc digui.c
liuzj@ET302Buildver:~/zhanghong/make$ ./a.out
temp = 120
liuzj@ET302Buildver:~/zhanghong/make$
int recursive(int i)
{
int sum;
if(0 == i)
return 1;
else
sum = i * recursive(i - 1); //执行的结果就是5*4*3*2*1
return sum;
}
int main()
{
unsigned int temp;
temp = recursive(5);
printf("temp = %d\n",temp);
} 结果: liuzj@ET302Buildver:~/zhanghong/make$ vim digui.c
liuzj@ET302Buildver:~/zhanghong/make$ gcc digui.c
liuzj@ET302Buildver:~/zhanghong/make$ ./a.out
temp = 120
liuzj@ET302Buildver:~/zhanghong/make$