兔子問題 —— 遞歸的應用 原

兔子問題、遞歸

public class Test {

    /**
     * 兔子問題
     * 斐波那契數列
     */
    @org.junit.Test
    public void test2() {
        int m = 5;
        for (int i = 1; i <= m; i++) {
            System.out.printf("第%d個月,有%d個兔子\n", i, fib(i));
        }
    }

    private int fib(int month) {
        if (month == 1 | month == 2) {
            return 1;
        } else {
            return fib(month - 1) + fib(month - 2);
        }
    }

    /**
     * 計算1+2+3+4+...+100的值
     */
    @org.junit.Test
    public void test3() {
        int i = 10;
        System.out.printf("%d的累計和是%d", i, sum(i));
    }

    private int sum(int x) {
        if (x == 1) {
            return 1;
        } else {
            return x + sum(x - 1);
        }
    }

    /**
     * 計算1 -2 +3 +-4+ 5- 6 + 7 - 8 + 9的值
     */
    @org.junit.Test
    public void test4() {
        int i = 4;
        System.out.printf("%d的差累計和是%d", i, sum2(i));
    }

    private int sum2(int i) {
        if (i == 1) {
            return 1;
        }
        else if (i % 2 == 0) {
            return sum2(i - 1) - i;
        } else {
            return sum2(i - 1) + i;
        }
    }

    /**
     * 漢諾塔問題
     * 實現 A-B-C 方式,A-C-B, A-C, B-A-C
     */
    @org.junit.Test
    public void test5() {

    }

}

這篇文章的解釋挺好的

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章