CodeGym /Java Blog /Toto sisi /Java遞迴
John Squirrels
等級 41
San Francisco

Java遞迴

在 Toto sisi 群組發布

什麼是Java遞迴?

函數或方法呼叫自身的情況稱為遞歸,這樣的函數或方法稱為遞歸函數或遞歸方法。這種方法總是用於將複雜的問題分解為簡單且更容易編寫的問題。一個簡單的例子是將兩塊鏡子放在彼此前面,它們將開始遞歸地相互反射,您可以輕鬆看到。

間接遞迴

上面的例子代表了間接遞歸,即函數一呼叫函數二,函數二呼叫函數一。

直接遞迴

當一個方法一次又一次地呼叫自身時,稱為直接遞歸

停止條件

現在你會想,如果一個方法一次又一次地呼叫自身,那麼它肯定會面臨堆疊溢位錯誤。是的,你是對的,就像無限循環一樣,它可以進入無限遞歸。我們必須提供一個基本條件終止條件才能停止這種無限遞歸,稱為停止條件,並且該條件始終在遞歸方法內部提供,我們將在下面的範例中詳細看到。

遞迴範例


class Recursion {

    static int factorial( int n ) {
        // base condition or termination condition
        if (n != 0)  
        // here we are calling the recursive method
            return n * factorial(n-1); 
        else
            return 1;
    }

    public static void main(String[] args) {
        // initializing the variables
        int number = 5, result;
        result = factorial(number);
        System.out.println(number + " factorial = " + result);
        
        // changing the value from 5 to 10
        number = 10;
        result = factorial(number); // recursive function call
        System.out.println(number + " factorial = " + result);
    }
}

範例輸出

5 階乘 = 120 10 階乘 = 3628800
在這個遞歸方法範例中,我們有一個從 main 方法呼叫的函數階乘。我們傳遞了一個值 5 來查看它的階乘是多少,即 120。這個階乘函數透過傳遞 4 的值再次呼叫自身,它再次呼叫並傳遞 3 的值,依此類推,直到停止條件滿足met,即值為0。當我們將值從5 改為10 時,也會發生相同的情況。

遞歸的優點和缺點

遞歸程式碼易於編寫、調試和維護,並且節省時間。但另一方面,每次呼叫都會消耗變數的內存,因此我們可能會耗盡記憶體。

結論

我們希望您了解 Java 遞歸以及如何實現它,以及它的優點和缺點。請隨意練習,並在需要更多幫助時返回。快樂學習!
留言
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION