初識遞迴方法

悟小天發表於2019-07-29

一個方法體內呼叫它自身,就稱為遞迴方法。方法遞迴包含了一種隱式的迴圈,它會重複執行某段程式碼,但這種重複執行無須迴圈控制。

要使用遞迴,必須要有兩個條件:

  1. 遞迴終止條件,不然會陷入死迴圈
  2. 遞迴表示式,即找出規律

下面,給出幾道關於遞迴的演算法題,來領悟遞迴的神奇。

1.求1~n的階乘

一般思路,是用for迴圈來求解,不過我們這裡用遞迴來做。

    //求1~n的階乘
    public static int factorial(int n) {
        if (n == 1) {
            return 1;
        }
        return n * factorial(n - 1);
    }

2.斐波那契數列(Fibonacci sequence)

斐波那契數列的是這樣一個數列:1、1、2、3、5、8、13、21、34....,即第一項 f(1) = 1,第二項 f(2) = 1.....,第 n 專案為 f(n) = f(n-1) + f(n-2)。求第 n(n>=1) 項的值是多少。

    public static int fibonacci(int n) {
        if (n == 1) {
            return 1;
        } else if (n == 2) {
            return 1;
        } else {
            return fibonacci(n - 1) + fibonacci(n - 2);
        }
    }

3.小青蛙跳臺階

一隻青蛙一次可以跳上1級臺階,也可以跳上2級。求該青蛙跳上一個n(n>=1)級的臺階總共有多少種跳法。

    public static int frogJump(int n) {
        if (n == 1) {
            return 1;
        } else if (n == 2) {
            return 2;
        } else {
            return frogJump(n - 1) + frogJump(n - 2);
        }
    }

相關文章