数据结构与算法应用教程高佳琴第6章完递归课件教学.pptVIP

数据结构与算法应用教程高佳琴第6章完递归课件教学.ppt

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
数据结构与算法应用教程高佳琴第6章完递归课件教学.ppt

* * PPT研究院 POWERPOINT ACADEMY * 在线教务辅导网: 更多课程配套课件资源请访问在线教务辅导网 数据结构与算法实用教程 主编 高佳琴 第6章 递  归 本章要点: 1) 递归的基本概念和实现原理, 用递归的思想描述问题和书写算法的方法。 2) 阶乘等问题的递归解法。 3) 用非递归方式来实现递归问题的非递归解法(例如用循环、 栈等实现)。 本章难点: 递归算法的非递归解决方法。 6.1 递归的基本概念和实现原理 6.2 递归算法实现 6.3 递归问题的非递归实现 第6章 递  归 6.1 递归的基本概念和实现原理 (1) 递归就是在过程或函数里调用自身。 (2) 在使用递归策略时, 必须有一个明确的递归结束条件, 称为递归出口。 1.问题的定义是递归的 2.递归过程与递归工作栈 3.数据结构本身是递归的 4.问题的解法是递归的 (2) 在使用递归策略时, 必须有一个明确的递归结束条件, 称为递归出口。 1) 定义是递归的:在定义的过程中又引用了定义本身, 有很多数学函数有这种情况。 2) 数据结构是递归的:指数据结构中又包含了与本身相同的数据结构。 3) 解决问题的方法是递归的:在解决问题的过程中发现可以用相同方法反复调用去处理问题。 1.问题的定义是递归的 例6-2中, 求解Fib(n), 把它推到求解Fib(n-1)和Fib(n-2)。也就是说, 为计算Fib(n), 必须先计算Fib(n-1)和Fib(n-2), 而计算Fib(n-1)和Fib(n-2), 又必须先计算Fib(n-3)和Fib(n-4)。依此类推, 直至计算Fib(1)和Fib(0), 分别能立即得到结果1和0。在递推阶段, 必须要有终止递归的情况。例如在函数Fib中, 当n为1和0的情况。斐波那契数列的函数运行时的分解图如图6-2所示。 1.问题的定义是递归的 图6-1 求解n!的递归算法 1.问题的定义是递归的 图6-2 Fib函数分解图 例6-2中, 求解Fib(n), 把它推到求解Fib(n-1)和Fib(n-2)。也就是说, 为计算Fib(n), 必须先计算Fib(n-1)和Fib(n-2), 而计算Fib(n-1)和Fib(n-2), 又必须先计算Fib(n-3)和Fib(n-4)。依此类推, 直至计算Fib(1)和Fib(0), 分别能立即得到结果1和0。在递推阶段, 必须要有终止递归的情况。例如在函数Fib中, 当n为1和0的情况。斐波那契数列的函数运行时的分解图如图6-2所示。 1.问题的定义是递归的 2.递归过程与递归工作栈 1) 将所有的实在参数、 返回地址等信息传递给被调用函数保存。 2) 为被调用函数的局部变量分配存储区。 3) 将控制转移到被调用函数的入口。 1) 保存被调用函数的计算结果。 2) 释放被调用函数的数据区。 3) 依照被调用函数保存的上一层的返回地址将控制转移到调用函数。 1) 本次函数调用时的实在参数(函数名、 数值等)。 2) 返回地址(即上层中本次调用的语句的下一条语句或指令地址)。 3) 本层的局部变量。 2.递归过程与递归工作栈 图6-3 一次函数调用过程 3.数据结构本身是递归的 图6-4 单链表数据结构递归 4.问题的解法是递归的 有很多问题只要经过分析, 能够找到递归的成份就可以用递归 去解决。 6.2 递归算法实现 6.2.1 递归算法实现的基本步骤 6.2.2 递归的应用 6.2.1 递归算法实现的基本步骤 1) 确立边界条件: 找到递归终止的条件, 确定与递归出口相对应的操作。 2) 确定递归体所对应的操作:先假设在数据(参数及全局变量)接近递归出口时, 函数功能正确。可通过适当调用这些函数功能来实现算法功能,这些操作的描述便构成了这部分的算法。 6.2.2 递归的应用 6.3 递归问题的非递归实现 1) 递归算法是一种分而治之、 把复杂问题分解为简单问题的求解问题方法, 递归过程简洁、 易编、 易懂, 对求解某些复杂问题, 递归算法分析方法是有效的。 2) 递归算法的时间效率差, 重复计算多, 其时间效率当然很低。 6.3.1 简单递归问题的转换 6.3.2 借助栈实现非递归过程 6.3.1 简单递归问题的转换 一般对于单向递归和尾递归的情况, 都可用迭代方法将递归过程改为非递归过程。 6.3.2 借助栈实现非递归过程 1) 从栈中弹出当前状态(即部分已走走法), 如果栈空算法终止。 2) 判断当前状态是否已达终止状态, 如果是输出答案, 转1); 否则转3)。 3) 用当前状态产生可能的下一状态(即再走一步, 两步……), 将所有可能的下一状态全部压栈, 转1)。 1.求n个整数的平均值。 2.求n个自然数的最大公约数与最小公倍数。

文档评论(0)

带头大哥 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档