问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

递归、递推、迭代分别是什么意思,有什么区别?

发布网友 发布时间:2022-04-24 07:09

我来回答

3个回答

热心网友 时间:2022-04-23 00:25

<可以自由转载,但请注明以下内容,谢谢合作!>
<作者:Enoch Wang 引用自:http://chinawangquan.spaces.live.com>
所谓递归,简而言之就是应用程序自身调用自身,以实现层次数据结构的查询和访问。 递归的使用可以使代码更简洁清晰,可读性更好(对于初学者到不见得),但由于递归需要系统堆栈,所以空间消耗要比非递归代码要大很多,而且,如果递归深度太大,可能系统资源会不够用。
往往有这样的观点:能不用递归就不用递归,递归都可以用迭代来代替。
诚然,在理论上,递归和迭代在时间复杂度方面是等价的(在不考虑函数调用开销和函数调用产生的堆栈开销),但实际上递归确实效率比迭代低,既然这样,递归没有任何优势,那么是不是就,没有使用递归的必要了,那递归的存在有何意义呢?
万物的存在是需要时间的检验的,递归没有被历史所埋没,即有存在的理由。从理论上说,所有的递归函数都可以转换为迭代函数,反之亦然,然而代价通常都是比较高的。但从算法结构来说,递归声明的结构并不总能够转换为迭代结构,原因在于结构的引申本身属于递归的概念,用迭代的方法在设计初期根本无法实现,这就像动多态的东西并不总是可以用静多态的方法实现一样。这也是为什么在结构设计时,通常采用递归的方式而不是采用迭代的方式的原因,一个极典型的例子类似于链表,使用递归定义及其简单,但对于内存定义(数组方式)其定义及调用处理说明就变得很晦涩,尤其是在遇到环链、图、网格等问题时,使用迭代方式从描述到实现上都变得不现实。 因而可以从实际上说,所有的迭代可以转换为递归,但递归不一定可以转换为迭代。
采用递归算法需要的前提条件是,当且仅当一个存在预期的收敛时,才可采用递归算法,否则,就不能使用递归算法。
递归其实是方便了程序员难为了机器,递归可以通过数学公式很方便的转换为程序。其优点就是易理解,容易编程。但递归是用栈机制实现的,每深入一层,都要占去一块栈数据区域,对嵌套层数深的一些算法,递归会力不从心,空间上会以内存崩溃而告终,而且递归也带来了大量的函数调用,这也有许多额外的时间开销。所以在深度大时,它的时空性就不好了。
而迭代虽然效率高,运行时间只因循环次数增加而增加,没什么额外开销,空间上也没有什么增加,但缺点就是不容易理解,编写复杂问题时困难。
因而,“能不用递归就不用递归,递归都可以用迭代来代替”这样的理解,Enoch不敢苟同,还是辩证的来看待,不可一棍子打死。

参考资料:http://chinawangquan.spaces.live.com/blog/cns!9CF795352E94BF70!787.entry

热心网友 时间:2022-04-23 01:43

递归
在计算机编程里,递归指的是一个过程:函数不断引用自身,直到引用的对象已知。
递推是序列计算机中的一种常用算法。它是按照一定的规律来计算序列中的每个项,通常是通过计算机前面的一些项来得出序列中的指定象的值。其思想是把一个复杂的庞大的计算过程转化为简单过程的多次重复,该算法利用了计算机速度快和不知疲倦的机器特点。
迭代是重复反馈过程的活动,其目的通常是为了*近所需目标或结果。每一次对过程的重复称为一次"迭代",而每一次迭代得到的结果会作为下一次迭代的初始值。

热心网友 时间:2022-04-23 03:18

递归
http://ke.baidu.com/view/96473.htm

递推
http://www.dqdn.cn/c/suanfa/js505.asp

迭代
http://ke.baidu.com/view/461623.htm

区别
http://hi.baidu.com/%B0%D9%B6%C8hihi/blog/item/c1d259279b6e4f01908f9de7.html
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
形容啰嗦的成语有哪些? 求音乐。 清晨悄悄的来临,梦就结束一夜的旅行, 睁开朦胧的眼睛,放飞愉 ... 电脑开机屏幕没字,但是有开机声音风扇正常拔掉主机一端也会显示无... ...不开电脑了将CPU拆下来换了硅脂之后电脑就点不亮了请问怎么解决_百 ... 电脑换完硅脂后不开机将CPU拆下来换了硅脂之后电脑就点不亮了请问怎么解... qq群怎么解散(qq群怎么解散不了操作失败) 我的主板是七彩虹战斧C.H61 V21 为什么声音老是会停顿 为什么声音老... 酷睿i32120 +七彩虹战斧C.H61 V21 这个配置 不用独显游戏性能怎样,主流... i7 3770k配什么主板最便宜,要最便宜的,又能搭配gtx560ti,和8G内存的... 七彩虹战斧C.H61 V21产品参数 什么是牛顿迭代法? 期望迭代法则的应用 迭代思维应遵守哪几个核心思想? 期望迭代法则 期望迭代法则具体指的是什么 梦见朋友生气 期望迭代法则具体指的是什么? 经常做梦与人生气发火是怎么回事? 梦见看见朋友特别生气的样子以为什么 梦见别人生气,吵架,撒糖。 铁树属于哪类植物资源 有谁知道傣族的资料? 贵州省册亨县8月10号还可以去体检当兵吗 贵州铜仁地理论文范文初中 甜菜好吃吗? 贵州大有风机实业有限公司怎么样? 制糖工程考研 甘蔗酒是如何做成的 广西糖厂收购甘蔗多少钱一吨,我是贵州的村里很多甘蔗。 甘蔗制糖的简介 牛顿迭代公式有关算法? 【概率论与数理统计】关于迭代期望法则的证明。虽然有简略说明,但是还是不知道怎么证明。。。 更新迭代、推陈出新,区别是? expectation什么时候用复数什么时候用单数?请尽量详细。 递归和迭代算法的复杂度分析 经济计量学中非条件期望是是什么意思? 大一下学期刚开始学c语言 求n次方根 用牛顿迭代法 别用一些不懂的知识 就用牛顿迭代法前面和后面一点点的 敏捷开发中,产品迭代很快,鼓励开发人员测试,这种情况怎么看 首饰迭代原因? Fluent软件的迭代是什么意思啊? 我第一次在闲鱼上卖东西。交易安全吗? 闲鱼第一次卖东西需要注意什么? 闲鱼第一次卖东西很快就有人买吗 第一次在闲鱼卖东西,买家付款后我要怎样发货 第一次在闲鱼上卖东西注意什么?主要从来没有发过快递 发什么快递好?大 ... led灯条怎么选择,LED灯条多少钱? 第一次在闲鱼上卖出去的东西钱怎么要15天才能到? 因为是第一次在闲鱼卖东西,快递自己叫的不是系统上直接上门取件,客户怎么确认收货 第一次在闲鱼卖东西 已经显示的是付款 请问我可以发货了吗 假如我发货了货到了买家会不会不给钱 灯条坏了怎么维修