最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Java中的遞歸方法示例介紹

 更新時(shí)間:2021年12月27日 08:57:29   作者:liangzai2048  
大家好,本篇文章主要講的是Java中的遞歸方法示例介紹,感興趣的同學(xué)趕快來看一看吧,對(duì)你有幫助的話記得收藏一下,方便下次瀏覽

遞歸

方法定義本身調(diào)用方法本身的現(xiàn)象叫做遞歸

在這之前我們學(xué)的東西:例如StringBuffer.append().append().append()這個(gè)不叫遞歸。這個(gè)叫方法的連續(xù)調(diào)用Math.max(Math.max(a,b),c)也不是遞歸,那這些是什么呢?這些是方法的調(diào)用。

那什么是遞歸呢?

舉例:

從前有座山,山里有座廟,廟里有個(gè)老和尚,老和尚在給小和尚說故事,說的故事內(nèi)容是:。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。

從前有座山,山里有座廟,廟里有個(gè)老和尚,老和尚在給小和尚說故事,說的故事內(nèi)容是:。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。

從前有座山,山里有座廟,廟里有個(gè)老和尚,老和尚在給小和尚說故事,說的故事內(nèi)容是:。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。

從前有座山,山里有座廟,廟里有個(gè)老和尚,老和尚在給小和尚說故事,說的故事內(nèi)容是:。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。

。。。。。。。。。。。。。。。。。。。。。。廟不在了,遞歸結(jié)束。

舉例:

學(xué)習(xí)-高新就業(yè)-娶媳婦-生娃-學(xué)習(xí)-高薪就業(yè)-娶媳婦-生娃-學(xué)習(xí)-高新就業(yè)-娶媳婦-生娃-學(xué)習(xí)-高薪就業(yè)-娶媳婦-生娃-學(xué)習(xí)-高新就業(yè)-娶媳婦-生娃-學(xué)習(xí)-高薪就業(yè)-娶媳婦-生娃-學(xué)習(xí)-高新就業(yè)-娶媳婦-生娃-學(xué)習(xí)-高薪就業(yè)-娶媳婦-生娃-學(xué)習(xí)-高新就業(yè)-娶媳婦-生娃-學(xué)習(xí)-高薪就業(yè)-娶媳婦-生娃

娶不到媳婦,生不了娃,遞歸結(jié)束。

遞歸的注意事項(xiàng):

遞歸一定要有一個(gè)出口,結(jié)束條件,否則就是死循環(huán)遞歸的次數(shù)不能太多,否則就會(huì)發(fā)生內(nèi)存溢出構(gòu)造方法不能使用遞歸

案例一

參考代碼:

public class RecursionDemo1 {
    public static void main(String[] args) {
        show(10);
    }
 
    private static void show(int i) {
        //定義結(jié)束條件
        if (i<0){
            System.out.println("結(jié)束循環(huán)");
        }else {
            System.out.print(i + "\t");
            show(--i);
        }
    }
 
}

輸出結(jié)果:

?10?? ?9?? ?8?? ?7?? ?6?? ?5?? ?4?? ?3?? ?2?? ?1?? ?0?? ?結(jié)束循環(huán)

遞歸求階乘

5的階乘:

? ? ? ? 遞歸求階乘:

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

? ? ? ? ? ? ? ?= 5*4!

? ? ? ? ? ? ? ?= 5*4*3!

? ? ? ? ? ? ? ?= 5*4*3*2!

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

不使用遞歸實(shí)現(xiàn)階乘

參考代碼:

/*
        遞歸求階乘:
            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);
    }
}

?輸出結(jié)果:

5的階乘是:120

使用遞歸實(shí)現(xiàn)階乘

遞歸的實(shí)現(xiàn)思想:
1、結(jié)束條件:
if(i==1){return 1}

??? 2、尋找規(guī)律:
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);
        }
    }
}

輸出結(jié)果:

120

澳大利亞不死神兔(斐波那契數(shù)列)

有一對(duì)兔子,從出生第三個(gè)月開始,每個(gè)月都生一對(duì)兔子, 小兔子長到三個(gè)月后每個(gè)月又生一對(duì)兔子,假設(shè)這些兔子都不會(huì)死, 問:20個(gè)月,又多少對(duì)兔子?

?找規(guī)律:

? ? ?月? ? ? ? ?兔子對(duì)數(shù)

? ? ?1? ? ? ? ? ? ?1

? ? ?2? ? ? ? ? ? ?1

? ? ?3? ? ? ? ? ? ?2

? ? ?4? ? ? ? ? ? ?3

? ? ?5? ? ? ? ? ? ?5

? ? ?6? ? ? ? ? ? ?8

? ? ?7? ? ? ? ? ? ?13

? ? ?...

由此可見,兔子的對(duì)數(shù)數(shù)量是:

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

發(fā)現(xiàn)的規(guī)律是:

? ? ?1、從第三項(xiàng)開始,每一項(xiàng)都是前兩項(xiàng)之和

? ? ?2、說明每一項(xiàng)的前兩項(xiàng)的數(shù)據(jù)是已知的

?如何實(shí)現(xiàn)呢?

1、數(shù)組方式實(shí)現(xiàn)

2、基本變量實(shí)現(xiàn)

3、遞歸方式實(shí)現(xiàn)

使用數(shù)組實(shí)現(xiàn)

參考代碼:

public class RecursionDemo4 {
    public static void main(String[] args) {
        //使用數(shù)組實(shí)現(xiàn)
        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個(gè)月的兔子對(duì)數(shù)為:" + arr[19]);
    }
}

?輸出結(jié)果:

第20個(gè)月的兔子對(duì)數(shù)為:6765

使用遞歸實(shí)現(xiàn)

參考代碼:

public class RecursionDemo5 {
    public static void main(String[] args) {
 
        System.out.println("第20個(gè)月的兔子對(duì)數(shù)為:" + ribbateFibonacci(20));
 
    }
 
    private static int ribbateFibonacci(int month) {
 
        if (month == 1 || month ==2 ){
            return 1;
        }else {
            return ribbateFibonacci(month-1) +  ribbateFibonacci(month-2);
        }
    }
}

輸出結(jié)果:

第20個(gè)月的兔子對(duì)數(shù)為:6765

總結(jié)

到此這篇關(guān)于Java中的遞歸方法示例介紹的文章就介紹到這了,更多相關(guān)Java遞歸方法內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • java中File與MultipartFile互轉(zhuǎn)代碼示例

    java中File與MultipartFile互轉(zhuǎn)代碼示例

    在Java開發(fā)中,當(dāng)需要將本地File對(duì)象轉(zhuǎn)換為MultipartFile對(duì)象以處理文件上傳時(shí),可以通過實(shí)現(xiàn)MultipartFile接口或使用CommonsMultipartFile類來實(shí)現(xiàn),本文提供了詳細(xì)的轉(zhuǎn)換方法和代碼示例,需要的朋友可以參考下
    2024-10-10
  • MyEclipse配置JDK的全過程

    MyEclipse配置JDK的全過程

    這篇文章主要介紹了MyEclipse配置JDK的全過程,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-04-04
  • Java使用TCP協(xié)議發(fā)送和接收數(shù)據(jù)方式

    Java使用TCP協(xié)議發(fā)送和接收數(shù)據(jù)方式

    這篇文章詳細(xì)介紹了Java中使用TCP進(jìn)行數(shù)據(jù)傳輸?shù)牟襟E,包括創(chuàng)建Socket對(duì)象、獲取輸入輸出流、讀寫數(shù)據(jù)以及釋放資源,通過兩個(gè)示例代碼TCPTest01.java和TCPTest02.java,展示了如何在客戶端和服務(wù)器端進(jìn)行數(shù)據(jù)交換
    2024-12-12
  • springMVC 用戶登錄權(quán)限驗(yàn)證實(shí)現(xiàn)過程解析

    springMVC 用戶登錄權(quán)限驗(yàn)證實(shí)現(xiàn)過程解析

    這篇文章主要介紹了springMVC 用戶登錄權(quán)限驗(yàn)證實(shí)現(xiàn)過程解析,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-11-11
  • 一文深入分析java.lang.ClassNotFoundException異常

    一文深入分析java.lang.ClassNotFoundException異常

    這篇文章主要給大家介紹了關(guān)于java.lang.ClassNotFoundException異常的相關(guān)資料,java.lang.ClassNotFoundException是Java編程時(shí)經(jīng)常會(huì)遇到的一個(gè)異常,它表示JVM在嘗試加載某個(gè)類時(shí)未能找到該類,需要的朋友可以參考下
    2023-10-10
  • MyBatis-Generator的配置說明和使用

    MyBatis-Generator的配置說明和使用

    本文主要介紹了MyBatis-Generator的配置說明和使用的相關(guān)知識(shí)。具有很好的參考價(jià)值,下面跟著小編一起來看下吧
    2017-02-02
  • 詳解Java的TCP/IP編程學(xué)習(xí)--基于定界符的成幀

    詳解Java的TCP/IP編程學(xué)習(xí)--基于定界符的成幀

    這篇文章主要介紹了Java的TCP/IP編程學(xué)習(xí)--基于定界符的成幀,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-04-04
  • Java深入了解數(shù)據(jù)結(jié)構(gòu)之棧與隊(duì)列的詳解

    Java深入了解數(shù)據(jù)結(jié)構(gòu)之棧與隊(duì)列的詳解

    這篇文章主要介紹了Java數(shù)據(jù)結(jié)構(gòu)中的棧與隊(duì)列,在Java的時(shí)候,對(duì)于棧與隊(duì)列的應(yīng)用需要熟練的掌握,這樣才能夠確保Java學(xué)習(xí)時(shí)候能夠有扎實(shí)的基礎(chǔ)能力。本文小編就來詳細(xì)說說Java中的棧與隊(duì)列,需要的朋友可以參考一下
    2022-01-01
  • 關(guān)于網(wǎng)頁報(bào)錯(cuò)404原因以及解決方法

    關(guān)于網(wǎng)頁報(bào)錯(cuò)404原因以及解決方法

    404錯(cuò)誤是網(wǎng)站常見的錯(cuò)誤之一,出現(xiàn)的原因很多,解決方法也有很多種,這篇文章主要給大家介紹了關(guān)于網(wǎng)頁報(bào)錯(cuò)404原因以及解決方法的相關(guān)資料,需要的朋友可以參考下
    2024-01-01
  • Intellij IDEA中如何查看maven項(xiàng)目中所有jar包的依賴關(guān)系圖

    Intellij IDEA中如何查看maven項(xiàng)目中所有jar包的依賴關(guān)系圖

    這篇文章主要介紹了Intellij IDEA中如何查看maven項(xiàng)目中所有jar包的依賴關(guān)系圖,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-05-05

最新評(píng)論

蕲春县| 泰来县| 墨江| 敦煌市| 石屏县| 东至县| 即墨市| 云霄县| 开封市| 南木林县| 吴桥县| 达拉特旗| 通道| 仁化县| 张家港市| 渭源县| 阿鲁科尔沁旗| 普陀区| 子洲县| 哈巴河县| 东源县| 定州市| 通海县| 彰化县| 岳阳县| 长垣县| 衡阳县| 丰原市| 富顺县| 德昌县| 鄂温| 家居| 土默特左旗| 綦江县| 泸水县| 屯昌县| 吉首市| 大冶市| 建平县| 永靖县| 天峨县|