← クエスト一覧

クエスト32:再帰関数

スライド 1 / 5
コーデ
💻 コード例
実行結果
← クエスト一覧
🐍 Python / Quest 32 / 85

クエスト32:再帰関数

発展 +10 XP
🏠
今回の課題
factorial(5) を再帰関数で計算して、5の階乗 120 を表示しよう。
📖 解説を見る
🔄 再帰関数って何?

関数の中で自分自身を呼ぶことを「再帰」といいます。大きな問題を、ひとまわり小さい同じ問題に分けて解きます。

✏️ 再帰の例(カウントダウン):
def countdown(n):
    if n == 0:
        print('発射!')
        return
    print(n)
    countdown(n - 1)

countdown(3)
 → 3 2 1 発射!
n == 0 が「終わりの条件」、最後の行が「ひとまわり小さくして自分を呼ぶ」部分です。

📋 作るもの:
・関数名は factorial、引数 n を1つ受け取る
n が1以下のときは 1 を返す(これが終わりの条件)
・それ以外のときは、n と「1つ小さい数の階乗」をかけた結果を返す
factorial(5) なら 5 × 4 × 3 × 2 × 1 = 120 が返る

💡 どこで使う?

階乗やフィボナッチ数列、フォルダの中のフォルダをたどる、木のように枝分かれしたデータを探索するなど、自分の中に同じ形がくり返し現れる問題に向いています。for では書きにくい入れ子構造をスッキリ表せます。

⚠️ ポイント:
・必ず「終わりの条件」(ベースケース)を書くこと! 書かないと無限に呼び続ける
・5の階乗 = 5 × 4 × 3 × 2 × 1 = 120
ヒントを見る
まず「n が1以下なら 1 を返す」で終わりの条件を作ろう。そのあと、自分自身を1つ小さい数で呼んだ結果に n をかけて返せばいいよ。
期待する出力
120
📄 見本
「答えを見る」を押すと、お手本のコードが出ます。クリックでコピーできます。
💻 コードエディタ
実行すると結果がここに表示されます
正解!見本と同じになりました。
次へ →
🏠 ホームへ

れんしゅうもんだい

☑ 0 / 3 正解 レッスンに戻る

全問正解でクエストクリア!

未挑戦

問題 1: 再帰でfactorial(3)を計算して6を表示しよう!

実行結果
実行できたよ!
もう一度チャレンジ!
📄 見本の出力
6
未挑戦

問題 2: 再帰でフィボナッチ数列のfib(7)(= 13)を表示しよう!
(fib(0)=0, fib(1)=1, fib(n)=fib(n-1)+fib(n-2))

実行結果
実行できたよ!
もう一度チャレンジ!
📄 見本の出力
13
未挑戦

問題 3: 再帰で1〜nの合計を返すsum_to(n)を作ってsum_to(10)(= 55)を表示しよう!

実行結果
実行できたよ!
もう一度チャレンジ!
📄 見本の出力
55
コピーしました!