什麼是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 時,也會發生相同的情況。
GO TO FULL VERSION