算法设计与分析课件 07 递归算法.pptxVIP

  • 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)

1亿VIP精品文档

相关文档