- 2
- 0
- 约1.51万字
- 约 17页
- 2018-07-17 发布于福建
- 举报
递归算法作栈变化详解
通常,一个函数在调用另一个函数之前,要作如下的事情:a)将实在参数,返回地址等信息传递给被调用函数保存; b)为被调用函数的局部变量分配存储区;c)将控制转移到被调函数的入口. ??? 从被调用函数返回调用函数之前,也要做三件事情:a)保存被调函数的计算结果;b)释放被调函数的数据区;c)依照被调函数保存的返回地址将控制转移到调用函数.所有的这些,不论是变量还是地址,本质上来说都是数据,都是保存在系统所分配的栈中的. ??? ok,到这里已经解决了第一个问题:递归调用时数据都是保存在栈中的,有多少个数据需要保存就要设置多少个栈,而且最重要的一点是:控制所有这些栈的栈顶指针都是相同的,否则无法实现同步. ??? 下面来解决第二个问题:在非递归中,程序如何知道到底要转移到哪个部分继续执行?回到上面说的树的三种遍历方式,抽象出来只有三种操作:访问当前结点,访问左子树,访问右子树.这三种操作的顺序不同,遍历方式也不同.如果我们再抽象一点,对这三种操作再进行一个概括,可以得到:a)访问当前结点:对目前的数据进行一些处理;b)访问左子树:变换当前的数据以进行下一次处理;c)访问右子树:再次变换当前的数据以进行下一次处理(与访问左子树所不同的方式). ??? 下面以先序遍历来说明: ??? void preorder_recursive(Bitree T)????? /* 先序遍历二叉
您可能关注的文档
最近下载
- 血站检验科生物安全培训.pptx VIP
- 2026年高考英语全国一卷考试卷含答案.docx VIP
- 机械原理课程设计牛头刨床说明书位置11、7’.docx VIP
- 5、浙江省学前教育管理系统常见问题解答浙江省学前教育管理系统常见问题解答.doc VIP
- 牛头刨床(机械原理课程设计)完整版.docx VIP
- 2、浙江省学前教育管理系统(学前教育机构)操作手册.pdf VIP
- 案例研究的含义与特点.pptx VIP
- 浙江省学前教育管理系统(教育行政部门用户)操作手册.pdf VIP
- 机械原理课程设计-牛头刨床2点和八点说明书.pdf VIP
- 启动器说明书-QJZ16-120、80、60、30(N)(A).pdf VIP
原创力文档

文档评论(0)