栈(3)--栈与递归
来源:互联网 发布:做网络推广压力大吗 编辑:程序博客网 时间:2024/04/30 23:26
一:递归的实现:
1. 当在一个函数的运行期间调用另一个函数时,在运行该被调用函数之前,需先完成三项任务:
1).将所有的实参、返回地址等信息传递给被调用函数保存;
2).为被调用函数的局部变量分配存储区;
3).将控制转移到被调用函数的入口。
从被调用函数返回调用函数之前,应该完成下列三项任务:
1). 保存被调函数的计算结果;
2).释放被调函数的数据区;
3). 依照被调函数保存的返回地址将控制转移到调用函数。
2.递归函数执行的过程可视为同一函数进行嵌套调用,例如:
递归工作栈:递归过程执行过程中占用的数据区。
递归工作记录:每一层的递归参数合成一个记录。
当前活动记录:栈顶记录指示当前层的执行情况。
当前环境指针:递归工作栈的栈顶指针
二.举例说明;
递归算法求解正整数n的阶乘(n!)
long f (int n) { if (n = = 0) //递归结束条件 return 1; else return n * f(n – 1);//递归调用 }模拟 f(4)调用的系统栈的变化状态
然后返回:
0 0
- 栈(3)--栈与递归
- 栈与递归
- 栈与递归
- 栈与递归-汉诺塔
- 浅谈栈与递归
- 递归与栈
- 栈与递归
- 栈与递归
- 递归与栈
- 栈与递归
- 栈与递归
- 递归与栈
- 数据结构笔记-----递归与栈
- 专题四-栈与递归
- 13_递归与栈
- 如何用栈实现递归与非递归的转换
- 如何用栈实现递归与非递归的转换
- 如何用栈实现递归与非递归的转换
- svn的使用
- ios json对象转为对象数组
- 为了保证Linux系统正常运行、准确解决遇到的各种各样的系统问题
- 【Android开发:自定义控件系列一】仿android4.0 Spinner下拉效果
- JDK1.5新特性探讨
- 栈(3)--栈与递归
- Aspose for Cloud如何在PHP中执行邮件合并
- MFC中Listbox控件的使用
- 开元研究:产品入市调查方案——了解产品消费者的需求
- 报表查询之存储过程细节要点
- Create WAP Push SMS Messages By Adam Bird
- SQL SERVER的优化方法与建议初级培训
- Spinner样式大全
- Create WAP Push SMS Messages