♻️

再帰関数の基本と実装ステップ

に公開

再帰関数の基本と実装ステップ


✅ 目標

再帰関数(recursive function)の基本的な考え方と実装方法を理解し、
典型的な例題を通して、再帰の動作を体験しながら学ぶ。


📌 再帰とは?

関数の中で自分自身を呼び出す関数のことを「再帰関数」と呼ぶ。

def recursive():
    recursive()

⚠️ このままだと無限ループになるので、**終了条件(ベースケース)**が必要!


📌 終了条件とは?

再帰呼び出しを止めるための条件。
例えば「nが1以下になったら止める」など。

def countdown(n):
    if n == 0:
        return
    print(n)
    countdown(n - 1)

🧮 例①:階乗(factorial)

def factorial(n):
    if n == 1:
        return 1
    return n * factorial(n - 1)

print(factorial(5))  # 出力: 120
  • 5! = 5 × 4 × 3 × 2 × 1
  • 再帰で自然に書ける構造!

🧮 例②:フィボナッチ数列

def fib(n):
    if n <= 1:
        return n
    return fib(n - 1) + fib(n - 2)

print(fib(6))  # 出力: 8
  • フィボナッチ数列: 0, 1, 1, 2, 3, 5, 8, 13...
  • 繰り返し計算が多いので、大きな数では非効率(メモ化で改善可)

🌲 例③:DFS(深さ優先探索)に応用

graph = [[1, 2], [0, 3], [0, 3], [1, 2]]
visited = [False] * 4

def dfs(v):
    visited[v] = True
    print(v, end=' ')
    for neighbor in graph[v]:
        if not visited[neighbor]:
            dfs(neighbor)

dfs(0)
  • 再帰関数はグラフ探索(DFS)にも非常に便利!

💡 ポイントまとめ

概念 説明
再帰 自分自身を呼び出す関数
終了条件 無限ループを防ぐために必須
スタック 呼び出しはスタック構造で積まれる
応用例 階乗、フィボナッチ、DFSなど

Discussion