递归是一种函数或方法中调用自身的编程技术,递归思想在于把大问题分解为小问题,进一步分解为更小的问题,直到每个小问题可以解决为止,也就是说,递归就是
用与自己相似但规模较小的问题来描述自己。
递归算法的三个特性:
1,求解规模为n的问题可以转化为一个或多个结构相同规模较小的的问题,然后从这些较小的问题可以方便构造出大问题的解
2,递归调用的次数必须是有限的
3,递归必定有结束条件来终止递归,
递归的算法执行过程为递推和递归两个阶段。在递推阶段,将规模为n的问题的求解递推到比原来规模小的问题的求解,而且必须有终止递归的条件。在回归阶段,在获得最简单问题的解后,逐级返回,依次得到规模较大问题的解。递归算法无论是在空间还是时间上耗费量都比扑通算法要多,在算法设计时经常将递归算法转化为非递归算法,转化方法有以下3种:
1,通过分析跳过分解步骤,直接用循环结构来求值
2,用栈保存程序的运行过程,通过分析只保存必须保存的信息,从而利用非递归算法代替递归算法
3,利用栈保存参数,由于栈的后进先出的特性与递归算法的执行相吻合,因而可以用非递归算法代替递归算法
时间: 2024-10-05 03:48:29