Java 再帰とは何ですか?
関数またはメソッドがそれ自体を呼び出すシナリオは再帰として知られており、そのような関数またはメソッドは再帰関数または再帰メソッドとして知られています。このアプローチは、複雑な問題を単純で書きやすい問題に分割するために常に使用されます。簡単な例としては、2 つの鏡をお互いの前に置くと、再帰的に相互に反射し始めるので、簡単に見ることができます。間接再帰
上の例は、間接再帰、つまり関数 1 が関数 2 を呼び出し、関数 2 が関数 1 を呼び出すことを表しています。直接再帰
メソッドがそれ自体を何度も呼び出すことを、直接再帰と呼びます。停止状態
ここで、メソッドが自分自身を何度も呼び出している場合、確実にスタック オーバーフロー エラーが発生するだろうと考えるでしょう。はい、その通りです。無限ループと同様に、無限再帰に入る可能性があります。この無限再帰を停止するには、停止条件と呼ばれる基本条件または終了条件を提供する必要があります。この条件は常に recurse メソッド内で提供されます。これについては、以下の例で詳しく 説明します。再帰の例
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 を渡して再度呼び出し、値 4 を渡して値 3 を渡し、停止条件が満たされるまでこれを繰り返します。値は 0 です。値を 5 から 10 に変更した場合も同じことが起こります。
GO TO FULL VERSION