精选优质文档-倾情为你奉上递归算法具有两个特性:(1) 递归算法是一种分而治之、把复杂问题分解为简单问题的求解问题方法,对求解某些复杂问题,递归算法分析方法是有效的。(2)递归算法的时间效率差,其时间效率低。为此,对求解某些问题时,我们希望用递归算法分析问题,用非递归算法求解具体问题;消除递归原因:其一:有利于提高算法时空性能,因为递归执行时需要系统提供隐式栈实现递归,效率低,费时。其二:无应用递归语句的语言设施环境条件,有些计算机语言不支持递归功能,如FORTRAN、C语言中无递归机制 。 其三,递归算法是一次执行完,这在处理有些问题时不合适,也存在一个把递归算法转化为非递归算法的需求。理解递归机制,是掌握递归程序技能必要前提。消除递归要基于对问题的分析,常用的有两类消除递归方法。一类是简单递归问题的转换,对于尾递归和单向递归的算法,可用循环结构的算法替代。另一类是基于栈的方式,即将递归中隐含的栈机制转化为由用户直接控制的明显的栈。利用堆栈保存参数,由于堆栈的后进先出特性吻合递归算法的执行过程,因而可以用非递归算法替代递归算法。