计算机思维与算法课程论文.docxVIP

  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文档。上传文档
查看更多
****大学****学院 《计算机思维与算法分析》课程论文 计算机思维与算法之美 学 班  部 ******** 级 ************* 专  业  计算机科学与技术 学 姓  号 ************ 名 ****** 计算机思维与算法之美 摘要:本文通过参考相关文献,对递归算法和动态规划进行了较为全面的分析 与解释,并且通过举一个实例进行代码实现演示,具体分析递归算法与动态规 划分析,从中了解递归算法和动态规划问题。 关键字:计算机思维,递归算法,动态规划分析,算法设计 Abstract: In this paper, by reference to relevant literature, the recursive algorithm and dynamic programming are discussed in the comprehensive analysis and interpretation, and through code implements demonstration cite an example, detailed analysis of recursive algorithm and dynamic programming analysis, learn about recursive algorithm and dynamic programming problem. 算法设计与分析是数据结构的有力补充,从中可以了解到算法设计的奥妙 以及对数据结构中的数据存储结构更深层次的运用。计算机算法设计与分析是 面向设计的、处于核心地位的一门学科。算法是一组有穷的规则,它规定了解 决某一特定类型问题的一系列运算。算法设计是一件非常困难的工作,常用的 算法设计方法有:分治法、贪心方法、动态规划、回溯法等。 一、递归算法分析 1.1 递归算法简介与特点 递归就是在函数或子过程的内部,直接或间接地调用自己的算法;递归算 法是从下往上进行思维,需要对问题有全局的了解;在使用递归算法时,必须 至少测试一个可以终止递归的条件,并且还必须对在合理的递归调用次数内未 满足此类条件的情况进行处理,如果没有一个在正常情况下可以满足的条件, 则过程将陷入执行无限循环的高度危险之中;递归算法的描述非常简洁而易于 理解,但因重复计算和较大的堆栈消耗使递归算法的解题的运行效率较低;并 不是所有的语言都支持递归,在递归调用的过程当中系统为每一层的返回点、 局部量等开辟了栈来存储,递归次数过多容易造成栈溢出等不利编程的因素, 所以一般不提倡用递归算法设计程序。 1.2 递归过程 递归过程是直接调用自己或通过一系列的过程调用语句间接调用自己的过 程。在一个过程的运行期间调用另一个过程时,在执行被调用过程之前,系统 要先把所有的实在参数返回地址等信息传递给被调用的过程保存,为被调用过 程的局部变量分配存储空间,将控制转移到被调用入口。接下来从被调过程返 回调用过程要保存被调用过程的计算结果,释放被调用过程的数据区,依照被 调过程保存的返回地址将控制转移到调用过程。该过程服从后调用先返回的原 则。 1.3 递归算法的优缺点 递归算法易于理解,结构清晰,所编写的代码简洁精练,可读性好,有利 于代码的维护。然而递归算法的效率却较低,占用较大的内存开销,消耗更多 的系统堆栈,算法的空间复杂度大,故可以实现的深度是有限制的。而且要考 虑函数或算法是否具备收敛性,当且仅当一个算法存在预期的收敛效果时,采 用递归算法才是可行的,否则,就不能使用递归算法。 1.4 递归算法的适用范围 由于递归算法的运行效率较低,堆栈容易溢出的特点,递归算法适用于问 题规模较小且那些不存在简明的数学模型以阐明问题的本质,或者存在数学模 型,但是难于实现的问题,这样可以减少代码的复杂度。 递归算法所适用的问题一般有这样的特征:为求解规模为 N 的问题,设法 先将它分解为规模较小的子问题,然后从这些子问题的解构造出整个问题的解, 并且这些子问题也能采用同样的分解和综合方法,分解成规模更小的子问题, 并从这些更小的子问题的解构造出较大规模的问题的解,特别地,当规模 N=1 时,能直接得解。例如很多的数学函数是递归定义的(阶乘函数)、有的数据 结构(广义表,二叉树)还有一类本身没有明显的递归结构但用递归求解更为 简单的问题(汉诺塔问题,八皇后问题)。 1.5 递归与递推的关系 递推法是求解递归方程的基本方法,对于某些递归关系可由逐级递推求 得递归方程的解。 递归算法会引起一系列的函数调用,并且可能会有一系列的重复计算, 所以当某个递归算法能较方便地转化成递推算法时,通常按递推算法编写程序。 递归算法的执行过程分递推与回归两个阶段。在递推阶段,把较复杂的

文档评论(0)

lihuamei118 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档