- 4
- 0
- 约4千字
- 约 25页
- 2018-11-24 发布于江苏
- 举报
§4.3 递归过程的改写
§4.3 递归过程的改写 为了将递归过程有效地转换为非递归过程,需要如下的栈操作、分枝选择操作: 1.在递归过程开始运行之前,须给各局部变量赋值。 2.在递归过程结束处,检测栈是否空。如空,则结束整个过程的运行;如不空,则调用过程POP,再根据此时CP的值决定分枝选择的去向。 3.对过程中的每次递归调用作下述三项工作 3.对过程中的每次递归调用作下述三项工作 调用过程PUSH保存变量的值及返回点于栈中 修改递归过程的参量的值 转移至递归过程的开始处,即第一个关键点 设我们有过程PUSH和POP.在递归算法中一般地有n个递归调用语句,则该过程有n+ 2个关键点。第(i一1)次递归调用的返回点为第i个关键点。 一般的递归过程有如下结构 R(PARAMETER LIST); { ……………………………………① : //第i一1次递归调用语句} R(ARGUMENT LIST); …………………………………… …………………………………… } R的等价非递归过程Q的结构如下: Q(PARAMETERS); {清栈; 赋值语句;… ;赋值语句;//给局部变量赋值 l: : //第i一1次递归调用
原创力文档

文档评论(0)