递归和迭代的比较

递归和迭代的比较迭代(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栈异常。

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

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

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 航信金税接口「建议收藏」

    航信金税接口「建议收藏」我看到很多的航信接口,但是我发现好多都是中间商在宣传自己的接口,偶尔几个也是要积分的,像我这种白piao党那是没有积分的,下面是我给现在在做航信接口的基友们的一点建议前期条件1.本地电脑的金税环境(开票软件,智税集成)2.航信测试盘,测试注册文件(必需品)3.开发文档(一般没有,有的话也是经过二次修改过的那种)一些需要注意的地方:引用的dll是taxCardx,这个一般装了金税环境…

    2022年4月30日
    46
  • MyBatis学习总结(5)——实现关联表查询

    MyBatis学习总结(5)——实现关联表查询

    2021年7月8日
    91
  • 微积分(六)——一元函数微分学[通俗易懂]

    微积分(六)——一元函数微分学[通俗易懂]前言这一章的特点是出题点较多且杂,其实考察的知识就是大纲上的那些。或者说出题的角度灵活比较合适。除了掌握大纲中的要求,还要多做练习题找到题中经常出现的坑,大都是对定义的精确考察,我也遇到的都记录在这里。(一)一元函数微分学基础这一部分只会讨论什么是导数与微分,以及它们的计算。也是一元函数微分学最基础的部分。1)讨论导数与微分的概念给出函数判断导数是否存在:利用导数的定义判断在某一点导数是否存在,注意可导必定连续。如果函数是分段函数,要保证左右导数都存在且相等才存在导数。如果函数是绝对值函

    2025年7月4日
    0
  • MySQL官网下载教程

    MySQL官网下载教程在百度搜索输入:MySQL,然后选择官方网站,点击进入进入MySQL官网之后,首先点击:DOWNLOADS,待页面刷新之后,再点击:Community,点击:MySQLCommunityServer,最后点击Archivedversions,选择历史版本选择MySQLInstaller选择需要下载的版本最后点击Download进行下载…

    2022年5月3日
    44
  • css里的clear_css display属性的值及用法

    css里的clear_css display属性的值及用法clear:none|left|right|both.对于CSS的清除浮动(clear),一定要牢记:这个规则只能影响使用清除的元素本身,不能影响其他元素。清除浮动方法,1,给父级元素添加class=“clearflex”2,在css中给父级添加属性:overflow:hidden;(我比较喜欢这个)3,伪元素清除法,4,建立空的div,命名为clear,在css中添加clear:both;…

    2022年9月11日
    1
  • Jmeter断言-响应断言「建议收藏」

    Jmeter断言-响应断言「建议收藏」1:Jmeter断言-响应断言1.1:添加线程组1.2:添加http请求1.3:在http请求下添加“响应断言”1.4:添加查看结果树和Debug取样器1:断言成功的结果2:断言失败的结果(如下修改)2:参数化断言2.1:添加CSV配置原件2.2:对要测试的内容进行参数化2.3:观察结果树结果与第一章一样都是pass的3:模式匹配规则的介绍3.1:Substring模式匹配规则匹配其中的一段字符…

    2025年6月18日
    1

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

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