递归和迭代的比较

递归和迭代的比较迭代(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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • java 工作流框架_java工作流是什么?哪些工作流框架比较好?

    java 工作流框架_java工作流是什么?哪些工作流框架比较好?由于java编程语言本身的强大性,导致学习它需要掌握极其庞大的知识群。今天就带大家了解一下什么是java的工作流,以及为大家介绍一下哪些工作流框架比较好。简单来说,java工作流就是一个基于java开发的流程框架,一般情况下,好的工作流在开发时是不需要写代码的,直接配置就可以了。它一般在OA系统应用的频率比较高。那么哪些工作流框架比较好呢?首先Activiti、JBPM、JBossSeam、XJ…

    2022年5月16日
    49
  • CSS横向菜单

    CSS横向菜单

    2021年8月20日
    61
  • nessus扫描工具的使用_结合扫描器任务

    nessus扫描工具的使用_结合扫描器任务目录NessusScansSettings一个基本扫描的建立自定义扫描策略Nessus的高级扫描方法NessusNessus号称是世界上最流行的漏洞扫描程序,全世界有超过75000个组织在使用它。该工具提供完整的电脑漏洞扫描服务,并随时更新其漏洞数据库。Nessus不同于传统的漏洞扫描软件,Nessus可同时在本机或远端上遥控,进行系统的漏洞分析扫描。对应渗透测试人…

    2022年10月19日
    7
  • pycharm将代码同步到远程服务器_pycharm连接python调试器失败

    pycharm将代码同步到远程服务器_pycharm连接python调试器失败pycharm远程调试程序时出现“Couldn’tconnecttoconsoleprocess.Processfinishedwithexitcode-1”针对于错误代码为-1的情况,本人解决方式如下:pycharm→\rightarrow→EditConfigrations→\rightarrow→python→\rightarrow→Runwithp…

    2022年8月27日
    4
  • Linux中的pushd和popd

    Linux中的pushd和popd其实,很早就知道pushd和popd在linux中可以用来方便地在多个目录之间切换。那时比较浮躁,感觉切换目录没必要这么复杂。在实际中,发现通过使用pushd和popd能够极大地提高效率。0、使用cd-进行目录切换一般,Shell中都可以通过cd-命令回到之前的目录,下面是一个例子:$pwd/home/lfqy$cd/$cd-/home/lfqy$实际上,cd-中,-就

    2025年7月21日
    4

发表回复

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

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