関数は、いくつかの関連する関数を呼び出し用の関数にパッケージ化したボックスのようなものです。関数内で他の関数を呼び出すことも、関数自体を呼び出すこともできます。
関数がそれ自体を内部的に呼び出す場合、これは再帰関数です。
簡単な例を見てみましょう。
数学では、100 の階乗、100!=1009998...321 がわかります。
それを分解すると、100!=10099!,99!=9998!,98!=98*97!...
次に、次のように定義します。階乗を計算する関数:
def fact(n): return n*fact(n-1)
上記の関数は、数値に 1 より小さい数値を停止せずに掛け続けるように見えます。したがって、n=1 の場合に計算後に停止できるように上記の関数を修正する必要があります。
def fact(n): if n==0: return 1 else: return n*fact(n-1)
再帰関数はループ内に実装することもできます。ただし、再帰関数のロジックは比較的単純です。ただし、再帰関数を使用する場合は、再帰関数呼び出しが多すぎることによるスタック オーバーフローを防ぐように注意する必要があります。