- 2
- 0
- 约小于1千字
- 约 9页
- 2026-06-10 发布于山东
- 举报
算法设计与分析
本节要点
CONTENTS
递归算法
递归算法
递归必须要求有结束条件,不然就会陷入无限递归的状态,永远无法结束调用。
递归调用就是函数内部调用自身的过程。
实例1(P5739):求解n的阶乘n!,n!=1×2×3⋯×n。
解析:n的阶乘等于n×(n-1)!,可以采用递归算法,只需对特殊情况判断,作为递归结束条件。直接返回1,其它情况递归调用。设计递归函数三部曲:
(1)函数名和参数
(2)递归的结束条件
(3)自调用
3
递归算法
递归原理
4
递归:递推和回归。
递推是将原问题不断分解成子问题,直到达到结束条件,返回最近子问题的解;然后逆向逐一回归,最终到达递推开始的原问题,返回原问题的解。
递归算法
5
递归算法
阶乘是典型的递归调用问题。求解5的阶乘递推、回归过程如下图所示。
递归与栈
递归需要调用栈,系统自动调用。
6
递归需要的栈空间等于递归树的深度。
递归算法
7
5的阶乘递推(进栈)过程的形象表达如下图所示。
递归算法
8
5的阶乘回归(出栈)过程的形象表达如下图所示。
递归算法
9
递归算法
求解n的阶乘需要n次乘法,时间复杂度为O(n),递归过程中需要使用的栈空间,其空间复杂度也为O(n)。
注意:递归算法中,每一次递推都需要一个栈空间保存调用记录,空间复杂度需要计算递归栈使用的辅助空间。
算法分析
原创力文档

文档评论(0)