- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
数 据 结 构 第5章 递 归 本章目标 5.1 递归的定义 5.2 递归算法的工作原理 5.3 递归算法的实现形式 5.4 递归算法的分类 5.5 递归的简单应用举例 5.1 递归的定义 递归的定义 在数学和程序设计方法学中递归的定义是:若一个对象部分地包含它自己,或用它自己给自己定义,则称这个对象是递归的;若一个过程直接或间接地调用自己,则称这个过程是递归过程 递归的定义 在以下三种情况下,常常要用到递归的方法 定义是递归的 数学上常用的阶乘函数、幂函数、Fibonacci数列等,它们的定义和计算都是递归的 例如阶乘函数 { 1 当n=0时 n! = { n·(n-1)! 当n0时 阶乘可以用下面的递归函数来表达 递归的定义 类似地,可给出x的n次幂函数的一个递归定义: { 1 n=0 xn = { x·xn-1 n0 可以直接写出计算xn的power函数 递归的定义 类似地,可给出计算Fibonacci数列的函数Fib(n)的定义: { n 当n=0, 1时 Fib(n) = { Fib(n-1) + Fib(n-2) 当n 1时 该序列为0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, … Fabonacci数列对应的函数为 递归的定义 数据结构是递归的 某些数据结构就是递归的。例如,链表就是一种递归的数据结构。链表结点LNode的定义由数据域data和指针域next组成;而指针域next则又由LNode定义 递归的定义 不仅单链表,广义表、树、图也都是递归结构。所以关于它们的一些算法,也需要用递归思想实现 问题的解法是递归的 有些问题只能用递归方法来解决,若不用递归就只能用枚举法了 一个典型的例子就是“Tower of Hanoi”问题:婆罗门神庙里有一个塔台,台上有3根柱子(假设叫x,y,z)。在x柱上有64个金盘,每一个都比下面的小。把x柱上的金盘全部移到z柱上,移动的条件是:一次只能移动一个金盘,移动过程中大盘子只能放在小盘子下面 递归的定义 我们用递归解法 设x柱上最初有n个盘子,如果n=1,则将这一个盘子直接从x柱移到z柱上;否则,执行以下三步 (1) 用z做过渡,将x的n-1个小盘子移到y上 (2) 将x上最后的一个大盘子移到z上 (3) 用x做过渡,将y上的n-1个盘子移到z柱上,很显然这就能重复上述过程,只是盘子个数减为n-1了 递归的定义 它的递归算法如下 5.2 递归算法的工作原理 函数的调用 在函数调用中,一个函数的执行没有结束,又开始另一个函数的执行,因此必须用栈来保存函数中的返回地址,以便调用返回时能从断点继续往下执行 例:设有一个主程序,它调用函数a,a又调用函数b,b又调用函数c,其中r,s,t分别表示返回地址 函数的调用 函数的调用 操作系统通常为我们维护着一个运行栈(runtime stack) 每一个函数(包括main()函数)通常包含返回地址、局部变量、形式参数、返回值 包含所有这些信息的结构位于运行栈中,称为这个函数的活动记录(activation records)。只要一个函数在运行,属于它的活动记录就存在于运行栈中。栈顶的活动记录表示正处在该函数中运行 函数的调用 剖析一个递归调用 我们以power函数为例,剖析递归调用的过程 在这个过程中,利用了操作系统维护的运行栈(runtime stack)。我们以n=4为例 调用1 power(x, 4) 调用2 power(x, 3) 调用3 power(x, 2) 调用4 power(x, 1) 调用5 power(x, 0) 5返回 1 4返回 x 3返回 x·x 2返回 x·x·x 1返回 x·x·x·x 剖析一个递归调用 分治法与递归思想 现实中,我们经常会遇到这样的问题:为了解决它,我们可以把它分解为两个或多个子问题,而解决每个子问题的解法与解决这个大问题的解法相同,即把每个子问题再进一步分解为两个或多个更小的子
您可能关注的文档
- 数据结构与算法张晓莉王苗第5章树结构课件教学.ppt
- 数据结构与算法张晓莉王苗第6章图结构课件教学.ppt
- 数据结构与算法张晓莉王苗第7章_查找课件教学.ppt
- 数据结构与算法张晓莉王苗第8章_排序课件教学.ppt
- 数据结构与算法教程朱明方吴及第1章绪论课件教学.ppt
- 数据结构与算法教程朱明方吴及第3章链表课件教学.ppt
- 数据结构与算法教程朱明方吴及第5章图课件教学.ppt
- 数据结构与算法教程朱明方吴及第6章查找课件教学.ppt
- 数据结构与算法王曙燕chapter5多维数组和广义表课件教学.ppt
- 数据结构与算法王曙燕chapter6树和二叉树课件教学.ppt
- 2025年金寨县经管局下属单位招聘备考题库附答案.docx
- 2025年金川县体育局下属单位招聘备考题库附答案.docx
- 2025年西乡县纪委监委下属事业单位招聘笔试模拟试题附答案.docx
- 广西壮族自治区防城港市商务和旅游局事业单位考试《公共基础知识》国考真题.pdf
- 2025年苍溪县经管局下属单位招聘备考题库附答案.docx
- 2025河北石家庄辛集市农业投资有限公司招聘人员4人笔试备考试题最新.docx
- 2025年阜城县纪委监委下属事业单位招聘笔试参考题库附答案.docx
- 2025年甘肃省地矿局考核引进高层次人才补充(第二期)参考题库最新.docx
- 2025新疆交投独库高速投资发展有限责任公司社会招聘11人笔试参考题库附答案.docx
- 2025年河北保定市市直机关公开遴选公务员117名备考题库最新.docx
原创力文档


文档评论(0)