Java递归和迭代区别是什么

发布时间:2023-04-15 15:36:25 作者:iii
来源:亿速云 阅读:146

今天小编给大家分享一下Java递归和迭代区别是什么的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。

1.递归和迭代的区别

 时间复杂度比较

 用法比较

 开销

 无限重复


递归迭代
定义函数调用自身。重复执行的一组指令。
应用对于功能。对于循环。
终止通过 base case,这里不会有函数调用。当不再满足迭代器的终止条件时。
用法当代码大小需要很小并且时间复杂度不是问题时使用。当时间复杂度需要与扩展的代码大小进行平衡时使用
代码大小更少的代码更多的代码
时间复杂度非常高(通常是指数)的时间复杂度。时间复杂度相对较低(一般为多项式-对数)。
空间复杂度空间复杂度高于迭代。空间复杂度较低。
这里的栈是用来存放函数调用时的局部变量的。不使用堆栈。
速度执行速度很慢,因为它有维护和更新堆栈的开销。通常,它比递归更快,因为它不使用堆栈。
存储与迭代相比,递归使用更多内存。没有开销,因为迭代中没有函数调用。
高架拥有重复函数调用的开销。没有开销,因为迭代中没有函数调用。
无限重复如果递归函数不满足终止条件或未定义或从未达到基本情况,则会导致堆栈溢出错误,并且系统有可能在无限递归中崩溃。如果迭代语句的控制条件永远不为假或控制变量没有达到终止值,就会造成死循环。在无限循环中,它一次又一次地使用 CPU 周期。

2.代码

public class Test {
    // ----- 递归 -----
    // 求给定数的阶乘的方法
    static int factorialUsingRecursion(int n)
    {
        if (n == 0)
            return 1;

        // 递归呼叫
        return n * factorialUsingRecursion(n - 1);
    }

    // -----迭代 -----
    //求给定数的阶乘的方法
    static int factorialUsingIteration(int n)
    {
        int res = 1, i;

        // 迭代
        for (i = 2; i <= n; i++)
            res *= i;

        return res;
    }

    public static void main(String[] args)
    {
        int num = 5;
        System.out.println("Factorial of " + num
                + " using Recursion is: "
                + factorialUsingRecursion(5));

        System.out.println("Factorial of " + num
                + " using Iteration is: "
                + factorialUsingIteration(5));
    }
}
Factorial of 5 using Recursion is: 120
Factorial of 5 using Iteration is: 120

以上就是“Java递归和迭代区别是什么”这篇文章的所有内容,感谢各位的阅读!相信大家阅读完这篇文章都有很大的收获,小编每天都会为大家更新不同的知识,如果还想学习更多的知识,请关注亿速云行业资讯频道。

推荐阅读:
  1. Java中怎么实现流程控制
  2. Java怎么解决打家劫舍的问题

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

java

上一篇:使用Gradle打依赖包失败如何解决

下一篇:Java怎么使用字符流读写非文本文件

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》