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

递归和迭代有什么区别?

发布网友 发布时间:2022-04-23 23:11

我来回答

6个回答

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

一、含义不同:

递归是重复调用函数自身实现循环。迭代是函数内某段代码实现循环,循环代码中参与运算的变量同时是保存结果的变量,当前保存的结果作为下一次循环计算的初始值。

递归循环中,遇到满足终止条件的情况时逐层返回来结束。迭代则使用计数器结束循环。当然很多情况都是多种循环混合采用,这要根据具体需求。

二、结构不同:

递归与迭代都是基于控制结构:迭代用重复结构,而递归用选择结构。 递归与迭代都涉及重复:迭代显式使用重复结构,而递归通过重复函数调用实现重复。

 递归与迭代都涉及终止测试:迭代在循环条件失败时终止,递归在遇到基本情况时终止,使用计数器控制重复的迭代和递归都逐渐到达终止点:迭代一直修改计数器,直到计数器值使循环条件失败;递归不断产生最初问题的简化副本,直到达到基本情况。

递归算法一般用于解决三类问题:

(1)数据的定义是按递归定义的。(Fibonacci函数)

(2)问题解法按递归算法实现。

这类问题虽则本身没有明显的递归结构,但用递归求解比迭代求解更简单,如Hanoi问题。

(3)数据的结构形式是按递归定义的。

如二叉树、广义表等,由于结构本身固有的递归特性,则它们的操作可递归地描述。

以上内容参考:百度百科-递归

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

递归和迭代都是循环的一种。

简单地说,递归是重复调用函数自身实现循环。迭代是函数内某段代码实现循环,而迭代与普通循环的区别是:循环代码中参与运算的变量同时是保存结果的变量,当前保存的结果作为下一次循环计算的初始值。

 

递归循环中,遇到满足终止条件的情况时逐层返回来结束。迭代则使用计数器结束循环。当然很多情况都是多种循环混合采用,这要根据具体需求。

 

递归的例子,比如给定一个整数数组,采用折半查询返回指定值在数组中的索引,假设数组已排序,为方便描述,假设元素都为正数,数组长度为2的整数倍。

折半查询是查询的一种,比遍历所有元素要快很多。

int Find(int *ary,int index,int len,int value)
{
    if(len==1)//最后一个元素
    {
        if (ary[index]==value)return index;//成功查询返回索引
        return -1;//失败,返回-1
    }
    //如果长度大于1,进行折半递归查询
    int half=len/2;
    //检查被查值是否大于上半部分最后一个值,如果是则递归查询后半部分
    if(value>ary[index+half-1])
        return Find(ary,index+half,half,value);
    //否则递归查询上半部分
    return Find(ary,index,half,value);
}

 

 

迭代经典例子就是实数的累加,比如计算1-100所有实数的和。

int v=1;
for(i=2;i<=100;i++)
{
    v=v+i;
}

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

“递归”和“迭代”的区别如下:

1、递归的基本概念:程序调用自身的编程技巧称为递归,是函数自己调用自己.一个函数在其定义中直接或间接调用自身的一种方法,它通常把一个大型的复杂的问题转化为一个与原问题相似的规模较小的问题来解决,可以极大的减少代码量.递归的能力在于用有限的语句来定义对象的无限集合。

2、迭代:利用变量的原值推算出变量的一个新值.如果递归是自己调用自己的话,迭代就是A不停的调用B。

3、递归中一定有迭代,但是迭代中不一定有递归,大部分可以相互转换.能用迭代的不用递归,递归调用函数,浪费空间,并且递归太深容易造成堆栈的溢出。

程序调用自身的编程技巧称为递归( recursion)。递归做为一种算法在程序设计语言中广泛应用。 一个过程或函数在其定义或说明中有直接或间接调用自身的一种方法,它通常把一个大型复杂的问题层层转化为一个与原问题相似的规模较小的问题来求解,递归策略只需少量的程序就可描述出解题过程所需要的多次重复计算,大大地减少了程序的代码量。递归的能力在于用有限的语句来定义对象的无限集合。一般来说,递归需要有边界条件、递归前进段和递归返回段。当边界条件不满足时,递归前进;当边界条件满足时,递归返回。

递归算法解题相对常用的算法如普通循环等,运行效率较低。因此,应该尽量避免使用递归,除非没有更好的算法或者某种特定情况,递归更为适合的时候。在递归调用的过程当中系统为每一层的返回点、局部量等开辟了栈来存储。递归次数过多容易造成栈溢出等。

热心网友 时间:2022-04-23 05:09

用俄罗斯套娃来解释,递归就是先将最大的娃打开包住第二大的,再用这两个打开套住第三大的……
迭代就是用最小的娃装进第二小的里面,再以此类推……

热心网友 时间:2022-04-23 07:34

“递归”和“迭代”的区别如下:

1、递归的基本概念:程序调用自身的编程技巧称为递归,是函数自己调用自己.一个函数在其定义中直接或间接调用自身的一种方法,它通常把一个大型的复杂的问题转化为一个与原问题相似的规模较小的问题来解决,可以极大的减少代码量.递归的能力在于用有限的语句来定义对象的无限集合。

2、迭代:利用变量的原值推算出变量的一个新值.如果递归是自己调用自己的话,迭代就是A不停的调用B。

3、递归中一定有迭代,但是迭代中不一定有递归,大部分可以相互转换.能用迭代的不用递归,递归调用函数,浪费空间,并且递归太深容易造成堆栈的溢出。

热心网友 时间:2022-04-23 10:15

递归与迭代都是基于控制结构:迭代用重复结构,而递归用选择结构。
递归与迭代都涉及重复:迭代显式使用重复结构,而递归通过重复函数调用实现重复。
递归与迭代都涉及终止测试:迭代在循环条件失败时终止,递归在遇到基本情况时终止。
使用计数器控制重复的迭代和递归都逐渐到达终止点:迭代一直修改计数器,直到计数器值使循环条件失败;递归不断产生最初问题的简化副本,直到达到基本情况。迭代和递归过程都可以无限进行:如果循环条件测试永远不变成false,则迭代发生无限循环;如果递归永远无法回推到基本情况,则发生无穷递归。
递归函数是通过调用函数自身来完成任务,而且在每次调用自身时减少任务量。而迭代是循环的一种形式,这种循环不是由用户输入而控制,每次迭代步骤都必须将剩余的任务减少;也就是说,循环的每一步都必须执行一个有限的过程,并留下较少的步骤。
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
三七粉贵吗多少钱一斤 三七粉多少钱一斤 万达有什么app 如何避免好学生成为心态受害者? 为什么好学生心态会害了自己呢? 好学生心态受害者是怎样一种存在? 好学生心态有什么影响? 好学生心态受害者是指什么意思? “好学生心态受害者”是指哪些人? 好学生心态受害者是指谁呢? 好学生心态受害者是指什么人? 什么是迭代? “递归”和“迭代”有什么区别? 生活中大家经常说的迭代是什么意思? 迭代的意思是什么? “迭代”是什么意思? 迭代是什么意思? 矿泉水可不可以反复烧开? 矿泉水可以烧开喝吗? 买来的矿泉水可以烧开喝? 矿泉水可以加热烧开吗 矿泉水能不能烧开喝? 瓶装矿泉水可以烧开喝吗 矿泉水到底能不能烧开喝 矿泉水可不可以烧开了喝 台式机的COMS电池型号都是CR2032的3V电池不? 电池型号CR2032哪有卖 主板上的纽扣电池是什么型号 CR2032 台式电脑主板电池型号是CR2032,家有一个空闲的CR2032L,不知道能不能替换上,来用? 请问在哪里能买到纽扣电池,型号为cr2032? 苏泊尔不粘锅涂层掉了还能用吗 在java中“迭代”是什么意思? 易姓女孩取名有内涵 易姓女孩起名 姓易的女孩起什么名字好 请大神帮起个名字 易姓 女孩 姓易,女孩取名共三个字,择优重赏 帮我起个好名字,姓易。是个女孩 易姓女孩取名 中间带个乔字 2017年3月29号好听的女孩名字易姓 姓易起什么名字好是女孩名字 金猪年出生的姓易的女孩起名 为什么淘宝组装都用至强处理器? 至强CPU能不能家用? 有些人为什么喜欢买至强cpu? 英特尔 Xeon(至强) 3.00GHz 核心数: 1 &#47; 线程数: 2.这个处理器是单核还是双核? e5哪款cpu单核性能高 英特尔至强单核性能怎么样? 电脑CPU玩游戏靠单核性能的吗 ? 怎样看CPU单核性能的? 关于至强D1581CPU性能可以吗? 至强比酷睿除了单核性能差,还有哪些缺点?