- 1、本文档共39页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
4 递推与递归
递归算法总体思想 对这k个子问题分别求解。如果子问题的规模仍然不够小,则再划分为k个子问题,如此递归的进行下去,直到问题规模足够小,很容易求出其解为止。 n T(n) = n/2 T(n/4) T(n/4) T(n/4) T(n/4) n/2 T(n/4) T(n/4) T(n/4) T(n/4) n/2 T(n/4) T(n/4) T(n/4) T(n/4) n/2 T(n/4) T(n/4) T(n/4) T(n/4) 将求出的小规模的问题的解合并为一个更大规模的问题的解,自底向上逐步求出原来问题的解。 递归算法总体思想 将求出的小规模的问题的解合并为一个更大规模的问题的解,自底向上逐步求出原来问题的解。 n T(n) = n/2 T(n/4) T(n/4) T(n/4) T(n/4) n/2 T(n/4) T(n/4) T(n/4) T(n/4) n/2 T(n/4) T(n/4) T(n/4) T(n/4) n/2 T(n/4) T(n/4) T(n/4) T(n/4) 递归算法总体思想 将求出的小规模的问题的解合并为一个更大规模的问题的解,自底向上逐步求出原来问题的解。 n T(n) = n/2 T(n/4) T(n/4) T(n/4) T(n/4) n/2 T(n/4) T(n/4) T(n/4) T(n/4) n/2 T(n/4) T(n/4) T(n/4) T(n/4) n/2 T(n/4) T(n/4) T(n/4) T(n/4) 分治法的设计思想是,将一个难以直接解决的大问题, 分割成一些规模较小的相同问题,以便各个击破, 分而治之。 递推与递归的关系 相同点:数据元素之间的关系可以用抽象的、严格的公式表示出来,且不论是递推关系式还是递归公式,都具有边界条件。 不同点:递推是从边界条件出发,通过递推关系式求f(n)的值,从边界到目标解的过程清楚直观;而递归是从函数自身出发来达到边界条件,在通往边界的递归过程中,系统需要用栈把每次调用的现场(中间结果)保存下来,供递归返回时使用(恢复现场)。递归程序是高度概括的,并不能体现出这个复杂的过程,实际上这是由操作系统来完成的。 关系:递归与递推可以相互转换,具体应用时主要看哪种解法更加简便高效(测试递归法求FIB数列的效率)。 描述递归定义的函数或求解递归问题的过程称为递归算法。 递归算法有其致命的缺点:执行的效率很低,尤其在边界条件设置不当的情况下,极有可能陷入死循环或者内存溢出的窘境。 递归算法一般适用在三个场合: 1、数据的定义形式是递归的,如Fibonacci数列; 2、数据之间的逻辑关系(数据结构)是递归的,如树、图等的定义和操作; 3、某些问题虽然没有明显的递归关系或结构,但问题的解法是不断重复执行一种操作,只是问题规模由大化小,直至某个原操作(基本操作)就结束,如汉诺塔问题。 所能解决的问题一般具有以下几个特征: 该问题的规模缩小到一定的程度就可以容易地解决; 该问题可以分解为若干个规模较小的相同问题,即该问题具有最优子结构性质 利用该问题分解出的子问题的解可以合并为该问题的解; 该问题所分解出的各个子问题是相互独立的,即子问题之间不包含公共的子问题。 这条特征涉及到分治法的效率,如果各子问题是不独立的,则分治法要做许多不必要的工作,重复地解公共的子问题,此时虽然也可用分治法,但一般用动态规划较好。 递归小结 优点:结构清晰,可读性强,而且容易用数学归纳法来证明算法的正确性,因此它为设计算法、调试程序带来很大方便。 缺点:递归算法的运行效率较低,无论是耗费的计算时间还是占用的存储空间都比非递归算法要多。 解决方法:在递归算法中消除递归调用,使其转化为非递归算法。 采用一个用户定义的栈来模拟系统的递归调用工作栈。该方法通用性强,但本质上还是递归,只不过人工做了本来由编译器做的事情,优化效果不明显。 用递推来实现递归函数。 1、递推和动态规划概述 递推是从问题的初始状态(由已知的若干数据项表示)出发,通过状态之间的逻辑关系,逐步地层层推进,实现状态的转移,从而达到目标状态(期望的最终结果)的解题方法。简单说来,递推就是指一个数的序列H1,H2,H3,……,Hn,其中Hn可用H1,……,Hn-1来表示。本题的初始状态为fib(1)=1,fib(2)=1。状态之间的关系为fib(n) = fib(n-1) + fib(n-2)。目标状态为fib(n)。
您可能关注的文档
- 2016年华中科技大学硕士研究生入学《软件基础》考试大纲.pdf
- 2016年对外经济贸易大学信息学院841应用软件基础考研辅导班少干计划.pdf
- 2016年对外经济贸易大学信息学院841应用软件基础考研辅导班招生人数.pdf
- 2016年对外经济贸易大学信息学院841应用软件基础考研辅导班考研真题.pdf
- 2016年对外经济贸易大学信息学院841应用软件基础考研辅导班考研笔记.pdf
- 2016年造价工程师《安装工程》提高试题及答案.doc
- 2016新课标三维人教语文选修语言文字应用 第一课 第一节 美丽而奇妙的语言——认识汉语.doc
- 2016社保必威体育精装版规定.doc
- 2016秋季必威体育精装版版人教小学语文一年级上册第四单元复习卷.pdf
- 2016聚焦中考数学(四川省)考点跟踪突破20锐角三角函数和解直角三角形.doc
文档评论(0)