John Squirrels
レベル 41
San Francisco

Java 再帰

ランダム グループに公開済み

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 に変更した場合も同じことが起こります。

再帰の長所と短所

再帰的コードは記述、デバッグ、保守が簡単で、時間を節約できます。しかしその一方で、呼び出しのたびに変数用のメモリが消費されるため、メモリ不足になる可能性があります。

結論

Java 再帰とその実装方法、およびその利点と欠点について理解していただければ幸いです。気軽に練習して、さらにサポートが必要なときにいつでも戻ってください。楽しく学習しましょう!
コメント
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION