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