【遞歸:用代碼實現求5的階乘:不死神兔】


package com.bornsoft.test.capitalpool.tyc;

/**
 * @author shusheng
 * @description
 * @Email shusheng@yiji.com
 * @date 2018/10/16 8:52
 */
public class DiGuiDemo1 {

    public static void main(String[] args) {
        System.out.println(jieCheng(3));
        System.out.println(buSiShenTu(20));
    }

    /**
     * 需求:請用代碼實現求5的階乘。
     * 下面的知識要知道:
     * 5! = 1*2*3*4*5
     * 5! = 5*4!
     */
    public static int jieCheng(int n) {
        if (n == 1) {
            return 1;
        } else {
            return n * jieCheng(n - 1);
        }
    }

    /**
        有一對兔子,從出生后第3個月起每個月都生一對兔子,小兔子長到第三個月后每個月又生一對兔子,
        假如兔子都不死,問第二十個月的兔子對數為多少?
        *分析:我們要想辦法找規律
        *兔子對數
        * 第一個月:    1
        * 第二個月:    1
        * 第三個月:    2
        * 第四個月:    3
        * 第五個月:    5
        * 第六個月:
        * ...    8
        *由此可見兔子對象的數據是:
        *    1,1,2,3,5,8...
        *規則:
        *A:從第三項開始,每一項是前兩項之和
        *B:而且說明前兩項是已知的
        *
        *如何實現這個程序呢?
        *假如相鄰的兩個月的兔子對數是a,b
        *第一個相鄰的數據:a=1,b=1
        *第二個相鄰的數據:a=1,b=2
        *第三個相鄰的數據:a=2,b=3
        *第四個相鄰的數據:a=3,b=5
        *看到了:下一次的a是以前的b,下一次是以前的a+b
    */
    public static int buSiShenTu(int n) {
        if (n == 1 || n == 2) {
            return 1;
        } else {
            return buSiShenTu(n - 1) + buSiShenTu(n - 2);
        }
    }

}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM