递回算法的应用解答.doc

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
摘要 递归做为一种算法在程序设计语言中广泛应用。是指函数/过程/子程序在运行过程中直接或间接调用自身而产生的重入现象。递归是计算机科学的一个重要概念,递归的方法是程序设计中有效的方法,采用递归编写程序能使程序变得简洁和清晰。 递归的主要优点在于:某些类型的算法采用递归比采用迭代算法要更加清晰和简单。例如快速排序算法按照迭代方法是很难实现的。还有其他一些问题,特别是人工智能问题,就依赖于递归提供解决方案。最后,有些人认为递归要比迭代简单递归算法是一种直接或者间接地调用自身的算法。在计算机编写程序中,递归算法对解决一大类问题是十分有效的,它往往使算法的描述简洁而且易于理解。 递归算法解决问题的特点: (1) 递归就是在过程或函数里调用自身。 (2) 在使用递归策略时,必须有一个明确的递归结束条件,称为递归出口。 (3) 递归算法解题通常显得很简洁,但递归算法解题的运行效率较低。所以一般不提倡用递归算法设计程序。  (4) 在递归调用的过程当中系统为每一层的返回点、局部量等开辟了栈来存储。递归次数过多容易造成栈溢出等。所以一般不提倡用递归算法设计程序。。 关键字:递归,程序设计,算法 目 录 TOC \o 1-2 \h \u HYPERLINK \l _Toc12762 1. 绪论 PAGEREF _Toc12762 1 HYPERLINK \l _Toc387 1.1 问题的提出 PAGEREF _Toc387 1 HYPERLINK \l _Toc10032 1.2 任务与分析 PAGEREF _Toc10032 1 HYPERLINK \l _Toc6878 2. 0-1背包 PAGEREF _Toc6878 2 HYPERLINK \l _Toc27043 2.1 算法 PAGEREF _Toc27043 2 HYPERLINK \l _Toc14358 2.2 程序 PAGEREF _Toc14358 2 HYPERLINK \l _Toc13295 3. Hanoi塔 PAGEREF _Toc13295 4 HYPERLINK \l _Toc1146 3.1 算法 PAGEREF _Toc1146 4 HYPERLINK \l _Toc6530 3.2 程序 PAGEREF _Toc6530 4 HYPERLINK \l _Toc3489 4. 棋子移动 PAGEREF _Toc3489 5 HYPERLINK \l _Toc525 4.1 算法 PAGEREF _Toc525 5 HYPERLINK \l _Toc13088 4.2 程序 PAGEREF _Toc13088 6 HYPERLINK \l _Toc13010 5. 全排列 PAGEREF _Toc13010 8 HYPERLINK \l _Toc297 5.1 算法 PAGEREF _Toc297 8 HYPERLINK \l _Toc23374 5.2 程序 PAGEREF _Toc23374 9 HYPERLINK \l _Toc13585 6. 约瑟夫 PAGEREF _Toc13585 10 HYPERLINK \l _Toc2085 6.1 算法 PAGEREF _Toc2085 10 HYPERLINK \l _Toc25349 6.2 程序 PAGEREF _Toc25349 11 HYPERLINK \l _Toc13948 结论 PAGEREF _Toc13948 13 HYPERLINK \l _Toc11904 参考文献 PAGEREF _Toc11904 14 绪论 1.1 问题的提出 一个过程或函数直接或间接地调用自己本身称为递归,现在我们以具体例题来分析讲解递归问题。 递归的一般思路:把原问题分解为更小的子问题,再从子问题里慢慢寻找原问题的解。解题时首先列出递归表达式,然后用程序语言的方式把他表现出来。往往递归都可转化为循环或者模拟调用栈来实现,但是递归表达更利于理解。 1.1.1 递归应用 递归算法一般用于解决三类问题: (1)数据的定义是按递归定义的。(Fibonacci函数) (2)问题解法按递归算法实现。(回溯) (3)数据的结构形式是按递归定义的。(树的遍历,图的搜索) 1.1.2 递归的缺点: 递归算法解题的运行效率较低,在递归调用的过程当中系统为每一层的返回点、局部量等开辟了栈来存储。递归次数过多容易造成栈溢出等。 1.2 任务与分析 (1)0\1背包问题的递归算法和程序; (2)n阶hanoi塔的递归算法和程序; (3)棋子移动的递归算法和程序; (4)n个元素全排列的递归算法和程序; (5)约瑟夫问题的递

文档评论(0)

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

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

1亿VIP精品文档

相关文档