递归和迭代的比较

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


相关推荐

  • python爬虫学习教程,短短25行代码批量下载豆瓣妹子图片

    python爬虫学习教程,短短25行代码批量下载豆瓣妹子图片python爬虫学习教程,短短25行代码批量下载豆瓣妹子图片、非常简短,代码不是很多非常适合新手练习!学习python、python爬虫过程中有不懂的可以加入我的python零基础系统学习交流秋秋qun:前面是934,中间109,后面是170,与你分享Python企业当下人才需求及怎么从零基础学习Python,和学习什么内容。相关学习视频资料、开发工具都有分享!代码展示:#!/u…

    2022年9月14日
    0
  • 对不起,学会这些 Linux 知识后,我有点飘

    对不起,学会这些 Linux 知识后,我有点飘Linux简介UNIX是一个交互式系统,用于同时处理多进程和多用户同时在线。为什么要说UNIX,那是因为Linux是由UNIX发展而来的,UNIX是由程序员设计,它的主要服务对象也是程序员。Linux继承了UNIX的设计目标。从智能手机到汽车,超级计算机和家用电器,从家用台式机到企业服务器,Linux操作系统无处不在。大多数程序员都喜欢让系统尽量简单,优雅并具有一致性。举个例子,从最底层的角度来讲,一个文件应该只是一个字节集合。为了实现顺序存取、随机存取、按键存取、远程存取只能是

    2022年5月31日
    20
  • XML Schema <第三篇>

    XML Schema <第三篇>

    2021年8月21日
    65
  • 百度地图API显示多个标注点并添加百度样式检索窗口

    百度地图API显示多个标注点并添加百度样式检索窗口

    2021年10月10日
    44
  • 黑客暴力激活成功教程必备的12大逆向工具!设置再复杂的密码也没用!

    黑客暴力激活成功教程必备的12大逆向工具!设置再复杂的密码也没用!暴力激活成功教程攻击是最流行的密码激活成功教程方法之一,然而,它不仅仅是密码激活成功教程。暴力攻击还可用于发现Web应用程序中的隐藏页面和内容,在你成功之前,这种攻击基本上是“攻击一次尝试一次”。暴力激活成功教程是最流行的密码激活成功教程方法之一,然而,它不仅仅是密码激活成功教程。暴力激活成功教程还可用于发现Web应用程序中的隐藏页面和内容,在你成功之前,这种激活成功教程基本上是“激活成功教程一次尝试一次”。这种激活成功教程有时需要更长的时间,但其成功率也会更高。在本文中…

    2022年8月22日
    4
  • mac用什么软件录屏_macbookair录屏快捷键

    mac用什么软件录屏_macbookair录屏快捷键录屏软件哪个好?你是否遇到过需要记录手机或者电脑屏幕的时候,就像是打着游戏、看着剧,突然想要记录此时屏幕上的内容。其实很多的场景都可以使用录屏软件来记录屏幕上的内容,像是工作、学习、娱乐上的内容。那有什么好用的录屏软件和方法,一起来看看下面有关的方法介绍!分享录屏软件一、手机专业录制软件如果你在手机上查看视频的话,除了使用手机中的屏幕录制方法。还可以使用专业的录屏软件。如借助手机中的“嗨格式录屏大…

    2022年9月15日
    0

发表回复

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

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