1. 関数再帰
関数はネストして定義できるだけでなく、ネストして呼び出すこともできます。つまり、関数を呼び出すプロセスで、関数内で別の関数が呼び出され、関数の再帰呼び出しは関数を呼び出すプロセスを指し、直接呼び出します。または関数自体を間接的に呼び出す
再帰には、直接呼び出しと間接呼び出しの 2 種類があります。
1.1 ダイレクトコール
f1 を呼び出す過程で、f1 が再度呼び出されます。これは、関数 f1 自体を直接呼び出すことです。
def f1():
print('from f1')
f1()
f1()
1.2 間接呼び出し
f1 を呼び出す過程で f2 を再度呼び出し、f2 を呼び出す過程で f1 を再度呼び出す、これが間接呼び出し関数 f1 そのものです。
def f1():
print('from f1')
f2()
def f2():
print('from f2')
f1()
f1()
1.3 再帰的な終了条件
再帰が終了条件を設定しない場合、意味のない無限ループに入ってしまうため、終了条件を設定する必要があります。
例: ランダムに数値を入力し、数値と 10 の間の整数 (10 を除く) を出力したい