関数がそれ自体を呼び出すプロセスは再帰と呼ばれ、
対応する関数は再帰関数と呼ばれます。 コンピュータープログラミングは数学の基本的な応用なので、
まず、再帰の背後にある数学的推論を理解しようとします。
一般に、関数の概念は誰もが知っています。一言で言えば、関数は次のとおりです
入力を与えると出力を生成する数式。例:
関数 F(x) が次のように定義される関数であるとします: F(x) = x^2 + 4
この関数の Java コードは次のように記述できます:
return (x * x + 4);
}
それに応じて。
再帰に進む前に、別の数学を理解してみましょう
数学的帰納法 (PMI) として知られる概念.
式、または自然数の集合について主張される定理。
があります 次の 3 つのステップ:
1.** 自明なケースのステップ*
: このステップでは、に対する望ましいステートメントを証明します。 n = 0 または n = 1 のような基本ケース
2.
* 仮定のステップ**: このステップでは、目的のステートメントを仮定しますは n = k に対して有効です
S(N): 1 + 2 + 3 + ... + N = (N * (N + 1))/2
(最初の N 個の自然数の合計)
証拠:
ステップ 1: N = 1 の場合、S(1) = 1 が真です。
ステップ 2: 与えられたステートメントが N = k に対して真であると仮定します。つまり、
1 + 2 + 3 + .... + k = (k * (k + 1))/2
ステップ 3: ステップ 2 を使用して、N = k + 1 のステートメントを証明しましょう。
証拠:
1 + 2 + 3 + ... + (k+1) = (k*(k+1))/2 + (k+1)
1 + 2 + 3 + ... + (k+1) = (k+1)*((k + 2)/2)
1 + 2 + 3 + ... + (k+1) = ((k+1)*(k+2))/2
したがって、証明されました。
手順:
● 基本ケース: 再帰関数には終了条件が必要です
プロセスはそれ自体の呼び出しを停止します。このようなケースは基本ケースとして知られています。基本ケースがないと、自分自身を呼び出し続けて、
に陥ってしまいます。 無限ループ。すぐに再帰の深さ*を超えてスローされます
エラーです
● 再帰呼び出し: 再帰関数は、より小さいバージョンでそれ自体を呼び出します
主な問題の。このステップをそのまま書くときは注意が必要です
自分の小さな問題が何なのかを正しく理解することが重要です。
● 小規模な計算: 通常、再帰ごとに計算ステップを実行します
電話。この計算ステップは再帰呼び出しの前後に実行できます
問題の性質によって異なります。
注: 再帰では、再帰呼び出しを保存する組み込みスタックが使用されます。したがって、メモリのオーバーフローを避けるために、再帰呼び出しの数はできるだけ少なくする必要があります。もし
再帰呼び出しの数が最大許容量を超えています。
**再帰の深さ
**を超えます。それでは、再帰を使用していくつかの一般的な問題を解決する方法を見てみましょう
再帰
int ans = ファクト(n-1); #仮定のステップ
ans * n を返します。 #仮定のステップから問題を解く
}
パブリック静的int階乗(int n){
1 を返します;
それ以外
n*factorial(n-1) を返します。 // 再帰的なケース
}
以上が再帰 -1の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。