递归的详解:
2018-01-15 20:12
120 查看
递归的定义:在函数或子过程的内部,直接或者间接地调用自己的算法。
注明: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$
注明: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$
相关文章推荐
- 折半查找和递归折半查找详解(二分法查找,递归二分法查找)
- 递归 与 尾递归 详解
- C++抽象编程——递归策略(1)——汉诺塔问题详解(1)
- C#中的递归APS和CPS模式详解
- 面试之路(16)-归并排序详解(MergeSort)递归和非递归实现
- 深度优先搜索(DFS)递归与非递归实现逻辑详解
- 【04】淘淘商城-Service层递归拼装ItemCatResult详解
- 一起学DNS系列(十)图、例详解DNS递归和迭代查询原理及过程 (1)
- 深入Javascript函数、递归与闭包(执行环境、变量对象与作用域链)使用详解
- 面试之路(16)-归并排序详解(MergeSort)递归和非递归实现
- 面试之路(23)-递归和循环优缺点详解
- Python 递归处理文件和文件夹代码详解
- 创新工厂面试题详解:共打了多少鱼 -- 正解 递归求解法
- C++ 递归的详解(一)
- 详解Javascript函数声明与递归调用
- Python爬虫包 BeautifulSoup 递归抓取实例详解
- Oracle:递归查询详解【转】
- 一起学DNS系列(十)图、例详解DNS递归和迭代查询原理及过程 (2)
- SQL实现递归及存储过程中In()参数传递解决方案详解
- 面试之路(16)-归并排序详解(MergeSort)递归和非递归实现