我感觉递归换成非递归把,要把 递归变成循环结构,兔子生兔子算法就是例子。
但是递归换成非递归,有的时候还要自己设计栈,比如二叉树非递归算法。我好迷,有没有递归变成非递归的技巧呢?
就是转换成堆栈,如果你要一个通用的办法,那么就相当于实现一个解释器。因为解释器就维护一个通用的调用堆栈。
技巧得因问题而已,首先题主要明白个问题,计算机是如何执行递归的。
递归,即多次调用自身,计算机在处理函数调用时会有”保存现场“跟”恢复现场“的操作
每次调用一个新的函数,计算机都会将当前”现场“的变量都给保存下来用的就是保存到栈中
函数返回后又”恢复现场“,就是从刚刚栈中取出所有的变量。