当前位置:萝卜系统 > 硬件软件教程 > 详细页面

“递归”与“迭代”之间有啥区别?

“递归”与“迭代”之间有啥区别?

更新时间:2023-06-22 文章作者:未知 信息来源:网络 阅读次数:

根据运行的环境,操作系统可以分为桌面操作系统,手机操作系统,服务器操作系统,嵌入式操作系统等。

递归改迭代_递归和迭代的区别_递归迭代的区别

【0613更新后的答案】

阅读. 在本书中使用阶乘n!举个例子,它更清楚.

例如,定义了def factorial(n):. 接下来如何实施?

以计算阶乘(6)为例,有两种方法:

(1)6! =? ,6! = 6 5!然后5! =? 5! = 5 * 4! ...等等

递归迭代的区别_递归改迭代_递归和迭代的区别

(2)1! = 1,但关闭6!太远了-》 2! = 2 1! = 2,稍微靠近但仍然很远-> 3! = 3 * 2! = 6,距离比较近,但距离不够……所以是6!

第一个是递归,第二个是迭代.

递归与定义有关. 函数定义会自行调用. 例如,这里的阶乘函数. factorial(6)= 6 * factorial(5)或factorial(n)= n * factorial(n-1),这是真的.

但是,由于无法传递此公式,因此可以从右侧计算左侧的值. 因为不知道阶乘(5)操作数的值在右侧,如何计算它. 这是递归: 例如,如何到达B的定义为: 首先到达A,然后向前1公里是B;

假设有一种方法可以证明这个结论是正确的,我们不能保证达到B,因为这种方法需要达到A的前提,但是没有达到A的方法. (所以我个人认为递归的定义是正确的,但不一定实现. )这是“定义如何将B作为”. 这种“定义”很有趣. 可以说这是对的,但没有切入点. 意义.

递归迭代的区别_递归改迭代_递归和迭代的区别

因此,如果要递归能够实现递归,则递归的定义中必须具有一定的条件才能将递归终止为一个值,而不是无限地调用自身.

迭代更现实. 迭代是代代相传地求真,使误差越来越小. 例如这里,虽然3!当然还有6!虽然相去甚远,但是如果您愿意接受此错误,则认为它是6!近似值也是可能的,至少从1起!一路迭代3!错误仍然比1好!变小.

迭代的每个步骤都有特定的值,只要您愿意接受此错误,就可以停止.

总而言之,在同一过程中,共同点只会重复多次. 但是执行的位置和方法大不相同.

一般迭代(例如找到π的近似值)对于第一代来说可能是100,对于第二代来说是10,对于第三代来说是5,对于第四代来说是3.5 ...这样,每一代都是一个特定的值,并且递归也没什么. 联系. 但是更令人困惑的是迭代计算6!时间迭代和递归一起出现!在从上一代计算下一代的迭代过程中,上一代由fact-iter()表示递归和迭代的区别,下一代也由fact-iter()表示,这不是很清楚. 要计算特定值,它是基于基于事实的定义. 由于事实事实本身是在事实事实的定义中调用的,因此事实事实是递归定义的. 也就是说,每一代迭代计算的特定值都是由递归定义的过程事实迭代器生成的.

递归和迭代的区别_递归迭代的区别_递归改迭代

【上一个答案】

它本来有点令人困惑,我只是隐约地想到了[牛顿迭代法],就好像它在数值分析中提到过一样. 它应该能够体现迭代思维.

牛顿迭代method_360wikibaike.so.com

图标

突然之间,除了“多次重复计算”外,迭代和递归都不相同.

递归和迭代的区别_递归改迭代_递归迭代的区别

【迭代】从粗略到精确:

例如牛顿迭代,如果要使用函数表示此曲线中垂直坐标y和水平坐标x之间的数学关系(例如,可以是y = x或y = x * x ?),您可以首先给出一个初始函数y = f0(x),然后根据算法g计算第一时间,即f1 = g(f0),得到f1. 不要在这里深入了解g的细节,仅说明存在此过程. y = f1(x)更接近实际曲线递归和迭代的区别,但是精度不够,因此请使用g进行第二次计算,即f2 = g(f1),得到f2. y = f2(x)可以比y = f0(x),y?? = f1(x)更准确地表示y和x之间的关系,但这还不够...因此请使用g来计算第三次...

当您认为准确性令人满意时可以停止. 例如,如果您认为y = f2(x)已经可以表示y和x之间的关系,那么您可以接受此错误,则无需计算f3.

如果我们在这里停止,我们总共迭代了2次. 第一次迭代的效果是从f1中获取f2,第二次迭代的效果是从f2中获取f3 ...为什么需要执行迭代?由于f2比f1更准确,因此f3比f2更准确...继续迭代,它将变得越来越准确...只要您愿意,就可以迭代无数次

[递归]大事变小,小事变:

例如,递归在函数f()的实现中,并且在满足条件时调用f().

在满足条件时调用f()很重要. 也就是说,如果不满足此条件,则不会调用f(),也不会执行下一轮递归.

否则,f()无条件调用内层f(),内层f()无条件调用内层f(),内层f()调用内层f()...未完成...走了.

例如: 递归二进制搜索.


本文来自本站,转载请注明本文网址:
http://www.pc-fly.com/a/jisuanjixue/article-259966-1.html



温馨提示:喜欢本站的话,请收藏一下本站!

本类教程下载

系统下载排行

网站地图xml | 网站地图html