91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Java中的遞歸方法怎么用

發布時間:2021-12-27 10:07:54 來源:億速云 閱讀:120 作者:小新 欄目:開發技術

小編給大家分享一下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中的遞歸方法怎么用”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業資訊頻道!

    向AI問一下細節

    免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

    AI

    沙田区| 宁国市| 大渡口区| 浙江省| 富宁县| 稻城县| 宜城市| 榆中县| 息烽县| 贵溪市| 甘谷县| 天长市| 都匀市| 滦平县| 堆龙德庆县| 新密市| 怀来县| 高要市| 麻栗坡县| 河西区| 芦溪县| 三亚市| 建德市| 泌阳县| 德安县| 木兰县| 芜湖市| 舒兰市| 巴林左旗| 玉龙| 天峨县| 建阳市| 瑞安市| 中西区| 雷州市| 磐安县| 东乡| 会昌县| 波密县| 台南县| 九江市|