递归和迭代的比较

递归和迭代的比较迭代(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)


相关推荐

  • Nginx日志切割脚本

    Nginx日志切割脚本

  • PCB设计中的20H原则

    “20H原则”是指要确保电源平面边缘比地平面(0V参考面)边缘至少缩进相当于两个平面之间间距的20倍,其中H就是指电源平面与地平面之间的距离,如下图。为什么需要20H原则?在高速PCB中,通常电源平面和地平面间相互耦合RF能量成为边缘磁通泄露情况,而且RF能量(RF电流)会沿着PCB边缘辐射出去,为了减少这种耦合效应,所有的电源平面物理尺寸都要比最近邻的地平面尺寸小20H。补充…

  • MD5算法的Java实现

    MD5算法的Java实现一、算法原理概述MD5即Message-DigestAlgorithm5(信息-摘要算法5)MD4(1990)、MD5(1992,RFC1321)由RonRivest发明,是广泛使用的Hash算法,用于确保信息传输的完整性和一致性。MD5使用little-endian(小端模式),输入任意不定长度信息,以512-bit进行分组,生成四个32-bit数据,最后联…

  • n皇后问题描述_启发式算法解决N皇后问题

    n皇后问题描述_启发式算法解决N皇后问题在N*N的方格棋盘放置了N个皇后,使得它们不相互攻击(即任意2个皇后不允许处在同一排,同一列,也不允许处在与棋盘边框成45角的斜线上。你的任务是,对于给定的N,求出有多少种合法的放置方法。Input共有若干行,每行一个正整数N≤10,表示棋盘和皇后的数量;如果N=0,表示结束。Output共有若干行,每行一个正整数,表示对应输入行的皇后的不同放置数量。SampleInput

  • Centos7离线安装autoconf

    Centos7离线安装autoconf文章目录1.安装步骤1.1安装M41.2安装perl的依赖包perl-Data-Dumper1.3安装autoconf2.安装过程参考1.安装步骤1.1安装M4下载:http://mirrors.kernel.org/gnu/m4/m4-1.4.13.tar.gz拷贝到centos系统上,并解压:tar-xzvfm4-1.4.13.tar.gz到解压目录中:cdm4-1.4.13#配置编译环境./configure–prefix=/usr/local#编

发表回复

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

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