【递归:用代码实现求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);
        }
    }

}
终身学习者
原文地址:https://www.cnblogs.com/zuixinxian/p/9806502.html