Module: サブルーチン。再帰


Problem

1/12

再帰。これは何ですか?

Theory Click to read/hide

プロシージャまたは関数には、その中に別のプロシージャへの呼び出しを含めることができます。サブルーチン自体を呼び出すこともできます。この場合、コンピュータは気にしません。彼はいつものように、出会った命令を上から下まで一貫して実行します。

数学を覚えていれば、そこで数学的帰納法の原理に出会うことができます。それは次のとおりです。
あるステートメントは、すべての自然なnの場合に当てはまります。
    1) n = 1 の場合に有効です。
    2) 任意の自然 n = k に対するステートメントの妥当性から、n = k+1 についても真であることがわかります。

プログラミングではこの手法を再帰と呼びます

再帰は、指定された単純な基本ケースに基づいて、セット自体の観点からオブジェクトのセットを定義する方法です。

再帰的 は、それ自体を直接呼び出すか、他のプロシージャや関数を通じて呼び出すプロシージャ (関数) です。
再帰的プロシージャの例:

void Rec(int a)
{
  if (a>0) { Rec(a-1); }
  Console.WriteLine(a);
}

再帰の作業は、フローチャートとして概略的に表すことができます。

 
Rec() プロシージャはパラメータを指定して実行されます3 次に、パラメータ 3 のプロシージャ内で、パラメータ 2 のプロシージャが呼び出され、パラメータ 0 のプロシージャが呼び出されるまで同様に動作します。次に、制御はパラメータ 1 を持つプロシージャに戻り、数値 1 を出力して作業を終了します。パラメータ 3 のプロシージャの前。

呼び出されたすべてのプロシージャは、作業が完了するまでメモリに保存されます。同時プロシージャの数は再帰の深さと呼ばれます。

Problem

解析済みプロシージャを使用して、メイン プログラムに必要な行を追加します。
プログラムがそのような応答を返す理由を理解してください。