搜索
当前位置: 7303刘伯温开奖6374 > 迭代 >

在计算机算法中迭代和递归是什么意思?它们有什么区别?

gecimao 发表于 2019-07-12 21:53 | 查看: | 回复:

  可选中1个或多个下面的关键词,搜索相关资料。也可直接点“搜索资料”搜索整个问题。

  递归与迭代都涉及重复:迭代显式使用重复结构,而递归通过重复函数调用实现重复。

  递归与迭代都涉及终止测试:迭代在循环条件失败时终止,递归在遇到基本情况时终止。

  使用计数器控制重复的迭代和递归都逐渐到达终止点:迭代一直修改计数器,直到计数器值使循环条件失败;递归不断产生最初问题的简化副本,直到达到基本情况。迭代和递归过程都可以无限进行:如果循环条件测试永远不变成false,则迭代发生无限循环;如果递归永远无法回推到基本情况,则发生无穷递归。

  递归函数是通过调用函数自身来完成任务,而且在每次调用自身时减少任务量。而迭代是循环的一种形式,这种循环不是由用户输入而控制,每次迭代步骤都必须将剩余的任务减少;也就是说,循环的每一步都必须执行一个有限的过程,并留下较少的步骤。

  展开全部通常递归结构的算法,比如快速排序,以及一些比树更复杂的数据结构,应用递归实现自然,代码清晰!效率也不是问题!用迭代实现,反而显得代码拖沓,难以看懂,效率未必比递归高!

  而一些像数列,阶乘,斐波那契数列,等数学问题,用迭代结构清晰,算法高效,递归反而难以看懂,效率也不高!这一类问题,最好用迭代。

  而有些问题,具有明显的树形结构,或者比树结构更复杂,有很明确的层次关系,是一种层层推进的关系!

  递归的做法:我要求1到100的累加值,如果我已经得到1到99的累加值,将这个值加上100就是1到100的累加值;要得到1到99的累加值,如果已经得到1到98的累加值,将这个值加上99,就是1到99的累加值……最后我要得到1到2的累加值,我如果得到1自身累加值,再加上2即可,1自身的累加值显然就是1了。于是现在我们得到了1到2的累加值,将这个值加3就得到了1到3的累加值,……最后直到得到1到100的累加值。

  上述例子中,其实递归最后得到结果也是用迭代方法完成的,只是在程序的处理上直观看不出来。两者都能很好的完成计算任务,不同之处在于思维方式上,从而导致不同的计算方法:迭代是正向思维,从头到尾思考问题;递归是逆向思维,他假设我们已经得到了部分结果(假设我已经知道了1到99的累加值,把这个值加上100我们就得到了1到100的累加值了),从尾部追溯到头部,从而让问题简化(当然这个例子中看不出来,这里只是方便理解,有兴趣可以参考一下斐波那契数列 的构造方法)。

本文链接:http://olivierlutaud.net/diedai/700.html
随机为您推荐歌词

联系我们 | 关于我们 | 网友投稿 | 版权声明 | 广告服务 | 站点统计 | 网站地图

版权声明:本站资源均来自互联网,如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

Copyright @ 2012-2013 织梦猫 版权所有  Powered by Dedecms 5.7
渝ICP备10013703号  

回顶部