网站大量收购闲置独家精品文档,联系QQ:2885784924

关于递归算法的认识.doc

  1. 1、本文档共6页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
目录 摘要…………………………………………………………………… 引言……………………………………………………………………3、正文…………………………………………………………………… 3.1 递归算法的特点………………………………………………… 3.2 递归算法的要求…………………………………………………… 3.3 递归算法的过程…………………………………………………… 3.4 实例分析…………………………………………………………… 3.41 问题的提出…………………………………………………… 3.42 问题的分析…………………………………………………… 3.43 递归过程……………………………………………………… 总结………………………………………………………………… 参考文献…………………………………………………………… 关于递归算法的认识 【摘要】:递归思想是计算机科学的一个重要思想,递归方法是程序设计中的有效方法,它为程序设计者打开了一个全新的程序设计思路。采用递归思想编程,可以将一些貌似复杂的问题简单化,编写的程序更加简洁明了。 【关键词】递归算法 递推 递归出口 引言:递归算法都是通过自己调用自己,将求解问题转化成性质相同的子问题,最终达到求解的目的。在计算机程序设计中,递归算法对解决有些问题是十分有效的,它往往使算法的描述简洁而且易于理解,当使用非递归方法难于解决问题时,尝试用递归方法也许会给你带来意想不到的惊喜。著名的汉诺塔(Hanoi)问题,八皇后问题就是通过递归算法的思想来求解的。 正文: 递归算法是一种直接或者间接地调用自身算法的过程。 在使用递归策略时,必须有一个明确的递归结束条件,称为递归出口。在计算机编写程序中,递归算法对解决一大类问题是十分有效的,它往往使算法的描述简洁而且易于理解。递归调用是一种特殊的HYPERLINK /view/1265502.htm嵌套调用,是某个HYPERLINK /view/2369016.htm函数调用自己,而不是另外一个函数。递归调用一种解决方案,一种是逻辑思想,将一个大工作分为逐渐减小的小工作,比如说一个和尚要搬50块石头,他想,只要先搬走49块,那剩下的一块就能搬完了,然后考虑那49块,只要先搬走48块,那剩下的一块就能搬完了……,递归是一种思想,只不过在程序中,就是依靠函数嵌套这个特性来实现了。 递归算法的特点 递归算法是一种直接或者间接地调用自身算法的过程。在计算机编写程序中,递归算法对解决一大类问题是十分有效的,它往往使算法的描述简洁而且易于理解。递归算法解决问题的特点; 递归就是在过程或函数里调用自身。    在使用递归策略时,必须有一个明确的递归结束条件,称为递归出口。 (3)递归算法解题通常显得很简洁,但递归算法解题的运行效率较低。一般不提倡用递归算法设计程序。 (4) 在HYPERLINK /view/1265506.htm递归调用的过程当中系统为每一层的返回点、局部量等开辟了栈来存储。递归次数过多容易造成HYPERLINK /view/2061755.htm栈溢出等。所以一般不提倡用递归算法设计程序。 递归算法要求 递归算法所体现的“重复”一般有三个要求:一是每次调用在规模上都有所缩小(通常是减半);二是相邻两次重复之间有紧密的联系,前一次要为后一次做准备(通常前一次的输出就作为后一次的输入);三是在问题的规模极小时必须用直接给出解答而不再进行HYPERLINK /view/1265506.htm递归调用,因而每次递归调用都是有条件的(以规模未达到直接解答的大小为条件),无条件递归调用将会成为死循环而不能正常结束。 递归过程 递归过程是直接调用自己或通过一系列的过程调用语句直接调用自己的过程。在一个过程的运行期间调用另一个过程时,在执行被调用过程之前,系统要先把所有的实在参数返回地址等信息传递给被调用的过程保存,为被调用过程的局部变量分配存储空间,将控制转移到被调用入口。然后从被调用过程返回调用过程要保存被调用过程的计算结果,释放被调用过程的数据区,依照被调用保存的返回地址将控制转移到调用过程,该过程服从后调用先返回的原则。 下面我们通过棋子移动问题来理解下递归算法: 问题的提出 : 棋子移动问题: 有2n个棋子(n=4)排成一行,白子用0代表,黑子用1代表,n=5的初始状态为 0 0 0 0 0 1 1 1 1 1 1--(右边至少有两个空位)移动的规则是:每次必须同时移动相邻两个棋子,颜色不限,移动方向不限;每次移动必须跳过若干个棋子。要求最后成为 0 1 0 1 0 1 0 1 0 1 问题分析: n=4 0

文档评论(0)

xingyuxiaxiang + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档