TECH I.S.

Java 再帰


再帰

再帰は、関数自体を呼び出すようにする手法です。この手法は、複雑な問題を解決しやすい単純な問題に分解する方法を提供します。

再帰は理解するのが少し難しいかもしれません。それがどのように機能するかを理解する最善の方法は、実際に試してみるのが一番です。


再帰の例

2つの数値を加算するのは簡単ですが、ある範囲の数値を加算するのはもっと複雑です。次の例では、再帰を使用して、2 つの数値を加算する単純な作業に分割することで、数値の範囲を加算しています。

再帰を使用して、10 までのすべての数値を追加します。

public class Main { public static void main(String[] args) { int result = sum(10); System.out.println(result); } public static int sum(int k) { if (k > 0) { return k + sum(k - 1); } else { return 0; } } }

自分で試してみる »

例の説明

sum()関数が呼び出されると、パラメーターが追加されます、kより小さいすべての数値の合計kの結果を返します。 kが0になると、関数は0を返します。実行中、プログラムは次の手順に従います。

10 + sum(9)
10 + ( 9 + sum(8) )
10 + ( 9 + ( 8 + sum(7) ) )
...
10 + 9 + 8 + 7 + 6 + 5 + 4 + 3 + 2 + 1 + sum(0)
10 + 9 + 8 + 7 + 6 + 5 + 4 + 3 + 2 + 1 + 0

関数は自分自身を呼び出さないため、kが0の場合、プログラムはそこで停止し、result を返します。



停止条件

ループが無限ループの問題に陥る可能性があるように、再帰関数は無限再帰の問題に陥る可能性があります。無限再帰とは、関数が自分自身の呼び出しを停止しない場合です。すべての再帰関数には、関数が自分自身の呼び出しを停止する状態である停止状態が必要です。前の例では、停止条件は、パラメーターが次の場合です。k0になります。

概念をよりよく理解するために、さまざまな例を見ることはとても役に立ちます。この例では、関数は開始点と終了点の間に数値の範囲を追加します。この再帰関数の停止条件は、endstartより大きくない場合とする。

再帰を使用して、5から10までのすべての数字を加算します。

public class Main { public static void main(String[] args) { int result = sum(5, 10); System.out.println(result); } public static int sum(int start, int end) { if (end > start) { return end + sum(start, end - 1); } else { return end; } } }

自分で試してみる »

開発者は再帰に細心の注意を払う必要があります。これは決して終了しない関数や、過剰な量のメモリやプロセッサのパワーを使用する関数を簡単に作成してしまう可能性があるためです。ただし、再帰を正しく記述すると、非常に効率的で数学的に洗練されたプログラミング手法になります。



プログラミング学習を加速させる

プログラミングをプロの講師に教えてもらいませんか。

テックアイエスのプログラミングスクールは初心者も大歓迎です。年齢制限もありません。転職・副業に強く、挫折させない手厚いサポートで稼ぐ力を身につけましょう!

スクールの詳細