再帰関数: 自分自身を呼び出して問題を小さくしよう
再帰関数は、大きな問題を同じ形の小さな問題にして、自分自身を呼び出す書き方です。
ロシアのマトリョーシカ人形のように、中に同じ形の小さな問題が入っているイメージです。
使いどころ
- 階乗やフィボナッチ数
- 木構造の探索
- 深さ優先探索
- 分割統治アルゴリズム
手順
- 問題を小さくする
- 小さくした問題を同じ関数で解く
- これ以上小さくできない条件を用意する
- 戻りながら答えを作る
図で見る
コピペ用コード
def factorial(n):
if n == 1:
return 1
return n * factorial(n - 1)
print(factorial(4))
コードの読み方
if n == 1は、再帰を止める条件です。factorial(n - 1)で、1つ小さい問題を解いています。n * factorial(n - 1)で、小さい答えを使って大きい答えを作っています。
注意点
止まる条件がないと、関数が自分を呼び続けてエラーになります。