发布网友 发布时间:2022-03-29 08:45
共4个回答
懂视网 时间:2022-03-29 13:06
迭代与递归的区别在于:递归是由自己延伸出去的,而迭代是得到新的结果并替代了自己。
1、“递归”是指函数、过程、子程序在运行过程序中直接或间接调用自身而产生的重入现像。在计算机编程里,递归指的是一个过程:函数不断引用自身,直到引用的对象已知。
2、“迭代”的含义是:重复反馈过程的活动,其目的通常是为了逼近所需目标或结果。每一次对过程的重复称为一次“迭代”,而每一次迭代得到的结果会作为下一次迭代的初始值。
热心网友 时间:2022-03-29 10:14
深究递归和迭代的区别、联系、优缺点及实例对比(是我看到讲解递归与迭代的区别比较好的一篇文章)
文章有总结两者之间的关系:
1) 递归中一定有迭代,但是迭代中不一定有递归,大部分可以相互转换。
2) 能用迭代的不用递归,递归调用函数,浪费空间,并且递归太深容易造成堆栈的溢出./*相对*/在数学上,递归强调的是,新的值与前面计算的好几个值有关系;比如斐波那契数列
而迭代一般是只是与之间进行计算,即;
计算机进行算法分析中,(我对递归的复杂度分析不熟,可以去看看《算法导论》)递归方法一般是将递归式转换成树形结构,然后是不断向下计算吧;
在常见的迭代法中,有牛顿法与梯度下降法;像Tianyuan解说的那样,是一种循环*近的方式,使得初始值进过一系列的迭代之后收敛到极限值。
(再看看维基上的解释)
我想最主要的是你去用这些具体的方法,才会更加了解其中的一些区别。
热心网友 时间:2022-03-29 11:32
递归是一个树结构,每个分支都探究到最远,发现无法继续的时候往回走
每个节点只会访问一次
迭代是一个环结构,每次迭代都是一个圈,不会拉掉其中的某一步,然后不断循环
每个节点都会被循环访问
以前看过一段英文的解释两者的不同,现在没有搜到原文。大意是递归过程中, 问题的规模在缩小,这样最终得到问题的解;而迭代是一种由远变近的*近,问题的规模不见得缩小了,但是慢慢在调整接近答案。递归求解n的阶乘过程,非常符合这个描述;而数值分析课程里的许多方法,比如牛顿迭代法,也是符合这个描述的。
热心网友 时间:2022-03-29 13:07
迭代是将输出做为输入,再次进行处理。比如将摄像头对着显示器;比如镜子对着镜子;比如KTV中将麦克对着音箱;比如机关*扣动扳机发射子弹后,利用后座力继续扣动扳机。
用程序表述就是:for (int i=0; i < 100; i++) n = f(n);
比如下面这段生成分形图像的代码:
Shadertoy BETA
vec2 center = vec2(0.8,0);
float blue = 0.3;
void mainImage( out vec4 fragColor, in vec2 fragCoord ) {
vec2 z, c;
float scale = 20.0/iGlobalTime; // zoom in
vec2 uv = fragCoord.xy / iResolution.xy;
c.x = 1.3333 * (uv.x - 0.5) * scale - center.x;
c.y = (uv.y - 0.5) * scale - center.y;
z = c;
vec4 col = vec4(0,0,0,0);
for(int i=0; i<100; i++) {
float x = (z.x * z.x - z.y * z.y) + c.x;
float y = (z.y * z.x + z.x * z.y) + c.y;
blue += 0.028;
if((x * x + y * y) > 4.0) {
col = vec4(0,0,blue,0);
break;
}
z.x = x;
z.y = y;
}
fragColor = col;
}
程序中迭代了100遍,迭代次数越多,生成的图像细节度越高。
再给迭代举个通俗点的例子:假如你有一条哈士奇和一条中华田园犬,怎么让它们串出比较纯正的哈士奇呢?先让哈士奇与中华田园犬配对,生下小狗。再让哈士奇与小狗配对,当然要等小狗长大后。就这样一直让哈士奇与新生的小狗配对,一代一代地迭,最终你能得到比较纯正的哈士奇。如果你纠结猫三狗四,猪五羊六,牛七马八这样的自然规律,不妨把两条狗改为老鼠与宠物仓鼠,他们一个月就能迭代一次。
递归,简讲就是自己调用自己,自己包含自己。
用程序表述就是:void f(int n){f(n - 1);}不要在意这是死循环代码,只需知道这个函数中,又调用了函数自身,属于自己调用自己。
比如,显示器中的显示器,镜子中的镜子。我前面写着:摄像头对着显示器,镜子对着镜子是迭代,怎么现在又改成递归了?这不矛盾,因为摄像头对着显示器,镜子对着镜子这种行为是输出做为输入,再次进行处理,所以是迭代。显示器中的显示器,镜子中的镜子这种效果是自己包含自己,所以是递归。如同上面那幅图像,生成它的代码是迭代,而分形的效果是递归。