プロシージャまたは関数には、その中に別のプロシージャへの呼び出しが含まれる場合があります。サブルーチン自体を呼び出すこともできます。この場合、コンピュータは気にしません。また、彼はいつものように、出会った命令を上から下まで一貫して実行します。
数学を覚えているなら、そこで数学的帰納法の原理に出会うことができます。それは以下の通り
です。
あるステートメントがすべての自然なn に対して true である場合
1.n = 1 および
の場合に有効です。
2. 任意の自然な n = k に対するステートメントの妥当性から、n = k+1
に対してそれが真であることがわかります。
プログラミングではこの手法を再帰
と呼びます。
再帰は、指定された単純な基本ケースに基づいて、セット自体に関してオブジェクトのセットを定義する方法です。
再帰的は、それ自体を直接、または他のプロシージャや関数を通じて呼び出すプロシージャ (関数)とも呼ばれます
再帰的プロシージャの例:
static void Rec(int a)
{
if (a>0) Rec(a-1);
cout << a;
}コード>プレ>
再帰の作業はフローチャートで概略的に表すことができます。
Rec() プロシージャはパラメータ 3 で実行されます。次に、パラメータ 3 のプロシージャ内でパラメータ 2 のプロシージャが呼び出され、パラメータ 0 のプロシージャが呼び出されるまで同様に続きます。パラメータ 0 が呼び出された場合、再帰呼び出しはすでに行われず、パラメータ 0 を持つプロシージャは数値 0 を出力して終了します。次に、制御はパラメータ 1 を持つプロシージャに戻り、数値 1 を出力して作業を終了します。パラメータ 3 のプロシージャの前。
呼び出されたすべてのプロシージャは、作業が完了するまでメモリに保存されます。同時プロシージャの数は、再帰の深さ
と呼ばれます。