千家信息网

Java中的递归方法怎么用

发表于:2025-02-01 作者:千家信息网编辑
千家信息网最后更新 2025年02月01日,小编给大家分享一下Java中的递归方法怎么用,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!递归方法定义本身调用方法本身的现
千家信息网最后更新 2025年02月01日Java中的递归方法怎么用

小编给大家分享一下Java中的递归方法怎么用,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!

    递归

    方法定义本身调用方法本身的现象叫做递归

    在这之前我们学的东西:例如StringBuffer.append().append().append()这个不叫递归。这个叫方法的连续调用Math.max(Math.max(a,b),c)也不是递归,那这些是什么呢?这些是方法的调用。

    那什么是递归呢?

    举例:

    从前有座山,山里有座庙,庙里有个老和尚,老和尚在给小和尚说故事,说的故事内容是:。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。

    从前有座山,山里有座庙,庙里有个老和尚,老和尚在给小和尚说故事,说的故事内容是:。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。

    从前有座山,山里有座庙,庙里有个老和尚,老和尚在给小和尚说故事,说的故事内容是:。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。

    从前有座山,山里有座庙,庙里有个老和尚,老和尚在给小和尚说故事,说的故事内容是:。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。

    。。。。。。。。。。。。。。。。。。。。。。庙不在了,递归结束。

    举例:

    学习-高新就业-娶媳妇-生娃-学习-高薪就业-娶媳妇-生娃-学习-高新就业-娶媳妇-生娃-学习-高薪就业-娶媳妇-生娃-学习-高新就业-娶媳妇-生娃-学习-高薪就业-娶媳妇-生娃-学习-高新就业-娶媳妇-生娃-学习-高薪就业-娶媳妇-生娃-学习-高新就业-娶媳妇-生娃-学习-高薪就业-娶媳妇-生娃

    娶不到媳妇,生不了娃,递归结束。

    递归的注意事项:

    递归一定要有一个出口,结束条件,否则就是死循环递归的次数不能太多,否则就会发生内存溢出构造方法不能使用递归

    案例一

    参考代码:

    public class RecursionDemo1 {    public static void main(String[] args) {        show(10);    }     private static void show(int i) {        //定义结束条件        if (i<0){            System.out.println("结束循环");        }else {            System.out.print(i + "\t");            show(--i);        }    } }

    输出结果:

    10 9 8 7 6 5 4 3 2 1 0 结束循环

    递归求阶乘

    5的阶乘:

    递归求阶乘:

    5!= 5*4*3*2*1 = 120

    = 5*4!

    = 5*4*3!

    = 5*4*3*2!

    = 5*4*3*2*1!

    不使用递归实现阶乘

    参考代码:

    /*        递归求阶乘:            5!= 5*4*3*2*1 = 120               = 5*4!               = 5*4*3!               = 5*4*3*2!               = 5*4*3*2*1! */public class RecursionDemo2 {    public static void main(String[] args) {        //不使用递归的做法        int result = 1;        for (int i = 2; i<=5; i++){            result = result * i;        }        System.out.println("5的阶乘是:" + result);    }}

    输出结果:

    5的阶乘是:120

    使用递归实现阶乘

    递归的实现思想:
    1、结束条件:
    if(i==1){return 1}

    2、寻找规律:
    if(i!=1){
    return i * recursionFun(i-1);
    }

    参考代码:

    /*        递归求阶乘:            5!= 5*4*3*2*1 = 120               = 5*4!               = 5*4*3!               = 5*4*3*2!               = 5*4*3*2*1! */public class RecursionDemo3 {    public static void main(String[] args) {         System.out.println(recursionFun(5));     }     private static int recursionFun(int i) {         if (i==1){            return 1;        }else {            //5 * recursionFun(4)            //5 * 4 * recursionFun(3)            //5 * 4 * 3 * recursionFun(2)            //5 * 4 * 3 * 2 * recursionFun(1)            //5 * 4 * 3 * 2 * 1            return i * recursionFun(i-1);        }    }}

    输出结果:

    120

    澳大利亚不死神兔(斐波那契数列)

    有一对兔子,从出生第三个月开始,每个月都生一对兔子, 小兔子长到三个月后每个月又生一对兔子,假设这些兔子都不会死, 问:20个月,又多少对兔子?

    找规律:


    月 兔子对数

    1 1

    2 1

    3 2

    4 3

    5 5

    6 8

    7 13

    ...


    由此可见,兔子的对数数量是:

    1、1、2、3、5、8、13、21...


    发现的规律是:

    1、从第三项开始,每一项都是前两项之和

    2、说明每一项的前两项的数据是已知的

    如何实现呢?

    1、数组方式实现

    2、基本变量实现

    3、递归方式实现

    使用数组实现

    参考代码:

    public class RecursionDemo4 {    public static void main(String[] args) {        //使用数组实现        int[] arr = new int[20];        arr[0] = 1;        arr[1] = 1;         for (int i =2 ;i < arr.length;i++){            arr[i] = arr[i-2] + arr[i -1];        }        System.out.println("第20个月的兔子对数为:" + arr[19]);    }}

    输出结果:

    第20个月的兔子对数为:6765

    使用递归实现

    参考代码:

    public class RecursionDemo5 {    public static void main(String[] args) {         System.out.println("第20个月的兔子对数为:" + ribbateFibonacci(20));     }     private static int ribbateFibonacci(int month) {         if (month == 1 || month ==2 ){            return 1;        }else {            return ribbateFibonacci(month-1) +  ribbateFibonacci(month-2);        }    }}

    输出结果:

    第20个月的兔子对数为:6765

    以上是"Java中的递归方法怎么用"这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注行业资讯频道!

    递归 兔子 和尚 媳妇 学习 就业 阶乘 故事 方法 内容 对数 参考 代码 结果 高薪 高新 输出 数组 条件 篇文章 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 加强网络安全保护的歌曲 江西网络安全宣传周直播 ibm硬盘服务器管理 杭州九匡网络技术有限公司 珠海互联网科技有限公司 toad查看数据库配置 软件开发qc报告书 软件开发管理流程文档 软件开发作业指导书编号 福州自动化渗透网络安全培训 监控服务器可以用什么代替 手机乐胡麻将服务器链接码 黄浦区金融行业解决方案软件开发 企业网站云服务器选多大的 上海峰晓网络技术有限公司 锡山区专注软件开发 高斯数据库建表权限怎么控制 服务器上没有安全 虎牙直播部分服务器 计算机 互联网金融科技 移动软件开发技术 pdf 居家互联网科技有限公司 服务器cpu价格 网络安全的填空题 淮北点餐系统软件开发 四川大学网络安全学院考研科目 北碚区网络安全审计系统咨询辅导 医院数据库管理培训 湖北技能高考计算机考数据库 杂志社数据库的数据更新和维护
    0