递归和迭代的比较

递归和迭代的比较迭代(Iteration)与递归(Recursion)是开发过程中常用的编程技巧,二者有相似,也有区别。1、递归简单地说,就是函数调用函数自己。通常把相同规则的业务,定义为一个函数,通过函数的重复调用,完成整体业务的实现。用有限的语句来定义对象的无限集合。比如,一个数字的阶乘计算,通过递归实现如下://递归publicstaticintrecursio…

大家好,又见面了,我是你们的朋友全栈君。

迭代(Iteration)与递归(Recursion)是开发过程中常用的编程技巧,二者有相似,也有区别。

1、递归

简单地说,就是函数调用函数自己。

通常把相同规则的业务,定义为一个函数,通过函数的重复调用,完成整体业务的实现。用有限的语句来定义对象的无限集合。

比如,一个数字的阶乘计算,通过递归实现如下:

    //递归
    public static int recursion(int num){
        if (num <= 1){
            return 1;
        } else {
            return num * recursion(num - 1);
        }
    }

    public static void main(String[] args) {
        int result = recursion(5);
        System.out.println(result);
    }

2、迭代

迭代是通过计算得到下一个计算初始值,并使用计算得到的值进行下一步的计算,直到不符合条件,计算结束。与递归的区别为,函数A调用其他函数B。

同样计算阶乘,使用迭代方法实现如下:

    //迭代
    public static int iteration(int num){
        if (num <= 0){
            return 1;
        }

        int result = 1;
        for (int i = num; i >= 1; i--){
            result *= i;
        }
        return result;
    }

    public static void main(String[] args) {
        int result = iteration(5);
        System.out.println(result);
    }

3、比较

①递归中一定有迭代,迭代中不一定有递归。多数情况下上二者可以相互转换。

②递归满足条件后,逐层返回,每层都计算完后才返回结果;迭代满足条件后,通过计数器结束循环,直接返回计算结果。递归与迭代相比较,效率低。

③能使用迭代,尽量不要使用递归,因为迭代会浪费空间,栈深不够,会出现StackOverflowError栈异常。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/135085.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • C语言实现大整数乘法

    C语言实现大整数乘法转载自:点击打开链接乘法规律,一个数的第i位和另一个数的第j位相乘,一定会累加到结果的第i+j位,结果的数组一个数组元素存2位数,最后对结果处理进位,最后打印出来方法一见上面链接https://www.cnblogs.com/king-ding/p/bigIntegerMul.html方法二voidIntMultiply(inta[],intb[],intc[],intma,in…

  • ssl证书过期;申请以及Nginx配置。

    ssl证书过期;申请以及Nginx配置。1,登录阿里云,工作台找SSL证书或者安全下找CA证书2,点击创建证书(或购买证书),创建好以后点击证书申请、3,设置配置以及域名信息,仅填写圈住内容,其他默认即可4,随后等待一会,查看状态,是否为 已签发5,为已签发时,点击下载选择下载类型6,下载后解压文件7,上传至服务器,存放位置,先找到nginx所在位置 “/nginx/conf/”找到该位置创建“cert”把刚才解压的两个文件存放至此。8,开始nginx配置内容`server { #SSL 访问端口号为 443 li

  • 检测模型改进—OHEM与Focal-Loss算法总结[通俗易懂]

    检测模型改进—OHEM与Focal-Loss算法总结[通俗易懂]1.概述论文名称:TrainingRegion-basedObjectDetectorswithOnlineHardExampleMining代码地址:OHEMOHEM(onlinehardexampleminiing)算法的核心思想是:根据输入样本的损失进行筛选,筛选出hardexample,表示对分类和检测影响较大的样本,然后将筛选得到的这些样本应用在随机梯度…

  • ActiveMQ objecmessage 无法调用问题。

    ActiveMQ objecmessage 无法调用问题。

  • viper4android脉冲样本,V4A脉冲反馈样本第一弹 爽爆「建议收藏」

    煤油,积分3926,距离下一级还需1074积分NFS_359|煤油煤油,积分3926,距离下一级还需1074积分|6电梯直达发表于2015-1-218:14:34|只看楼主|只看大图|倒序浏览|阅读模式|收藏本帖NFS_359|煤油煤油,积分3926,距离下一级还需1074积分主题:19|帖子:1016|积分:3926该用户从未签到当前离线本帖最后由…

  • smalldatetime数据类型「建议收藏」

    smalldatetime数据类型「建议收藏」smalldatetime共需要4个字节,其中两个字节表示1900-1-1之后的所有天数,另外两个字节表示午夜后一分钟为单位的时间,支持范围从1900-1-1到2079-6-6转载于:https://www.cnblogs.com/Junelee1211/archive/2011/07/08/2100694.html…

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号