例のように 5 like を使用すると、else ステートメントに到達すると、
n * factorial(n - 1) を返します。
「階乗関数 (5-1) を掛けた 5 を返す」に変換します。5回…
いいえ、それは「階乗関数 (n-1) で乗算された n を返す」に変換されます (n は 5 から始まるため、5 回減少し、0 に達するまで else 句に入ります)。
- 関数を最初に入力したとき、n は 5 です。
- if 句は、n が 0 に等しいかどうかをチェックします。そうではないので、次のようになります。
- else 句。これは、「5 に階乗関数 (現在の関数) (5 - 1) を掛けた値を返す」に変換されます。
- 階乗関数を入力すると、n は 4 になります。
n が 0 になるまで、これらの手順をすべて繰り返します。その後、if 句は true になり、関数は 1 を返します。
したがって、factorial(0) からは 1 が返されます。Factorial(1) は 1 * factorial(0) を返すため、1 * 1 = 1 になります。
Factorial(2) は 2 * factorial(1) を返すため、2 * 1 = 2 となります。
Factorial(3) は 3 * factorial(2) を返すため、3 * 2 = 6 となります。
Factorial(4) は 4 * factorial(3) を返すため、4 * 6 = 24 になります。
Factorial(5) は 5 * factorial(4) を返すため、5 * 24 = 120 になります。