考研一轮递归如何改写为栈(王卓版)

如何借助栈改写递归的方法呢?

  1. 设置一个工作栈存放递归工作记录(包括实参,返回地址及局部变量等)
  2. 进入非递归调用入口(即被调用程序开始处)将调用程序传来的实在参数和返回地址入栈(递归程序不可以作为主程序,因而可以认为初始是被某个调用程序调用)。
  3. 进入递归调用入口:当不满足递归结束条件时,逐层递归,将实参、返回地址及局部变量入栈,这一过程可用循环语句来实现–模拟递归分解的过程
  4. 递归结果条件满足,将到达递归出口的给定常数作为当前的函数值
  5. 返回处理:在栈不为空的情况下,反复退出栈顶记录,根据记录中的返回地址进行题意规定的操作,即返回计算当前函数值,直至栈空为止–模拟递归求值过程。

猜你喜欢

转载自blog.csdn.net/m0_37149062/article/details/123441138