递归和迭代有什么区别


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

简单地说,

递归是重复调用函数自身实现循环。

迭代是函数内某段代码实现循环。

而迭代与普通循环的区别是:循环代码中参与运算的变量同时是保存结果的变量,当前保存的结果作为下一次循环计算的初始值。

递归循环中,遇到满足终止条件的情况时逐层返回来结束。

迭代则使用计数器结束循环。

当然很多情况都是多种循环混合采用,这要根据具体需求。

递归的例子,比如给定一个整数数组,采用折半查询返回指定值在数组中的索引,假设数组已排序,为方便描述,假设元素都为正数,数组长度为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;
}

本文摘自百度知道,原文地址:https://zhidao.baidu.com/question/1638784639202969220.html,侵删。

相关阅读 >>

递归算法的时间复杂度是什么

devexpress treelist递归的实例代码

递归和迭代有什么区别

c# 迭代字典的最佳方法是什么?

更多相关阅读请进入《递归》频道 >>




打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...