カテゴリ: Python 更新日: 2025/11/06

Pythonで再帰関数を使う方法!階乗・フィボナッチ数列の実装例

Pythonで再帰関数を使う方法!階乗・フィボナッチ数列の実装例
Pythonで再帰関数を使う方法!階乗・フィボナッチ数列の実装例

先生と生徒の会話形式で理解しよう

生徒

「先生、Pythonで『再帰関数』って聞いたんですが、どういうものですか?」

先生

「再帰関数は、自分自身を呼び出す関数のことですよ。ちょっと不思議に思うかもしれませんが、とても便利な方法です。」

生徒

「自分で自分を呼ぶってどういうこと?無限ループにならないんですか?」

先生

「いい質問ですね。再帰関数は『終了条件』を決めておくので、必ず終わります。わかりやすく説明しますね!」

1. 再帰関数とは?自分自身を呼び出す関数の基本

1. 再帰関数とは?自分自身を呼び出す関数の基本
1. 再帰関数とは?自分自身を呼び出す関数の基本

再帰関数とは、関数の中で自分自身を呼び出す関数のことです。プログラムの中で同じ処理を繰り返し使いたいときに使います。

でも、無限に呼び続けたらプログラムが止まらなくなるので、必ず「終了条件(ベースケース)」を用意して、その条件を満たしたら処理を終わるようにします。

2. 再帰関数の仕組みを簡単にイメージしよう

2. 再帰関数の仕組みを簡単にイメージしよう
2. 再帰関数の仕組みを簡単にイメージしよう

たとえば、鏡の前に鏡を置いて鏡が無限に続くように見えるイメージがありますが、再帰関数は「自分を呼び出すけど、いつか終わる」という仕組みです。

具体的には、「自分で自分を呼ぶ」→「条件に当てはまればやめる」この繰り返しで成り立っています。

3. Pythonでの再帰関数の書き方

3. Pythonでの再帰関数の書き方
3. Pythonでの再帰関数の書き方

再帰関数は普通の関数とほとんど同じですが、関数の中で自分自身を呼び出すことがポイントです。次の例を見てみましょう。


def example(n):
    if n == 0:
        return "終了"
    else:
        return example(n-1)

この関数は、nが0になるまで自分自身を呼び続け、0になったら「終了」と返します。

4. 再帰関数でよく使う例①:階乗の計算

4. 再帰関数でよく使う例①:階乗の計算
4. 再帰関数でよく使う例①:階乗の計算

階乗(かいじょう)とは、1からその数までの整数をすべてかけた値です。例えば、5の階乗は「5×4×3×2×1 = 120」です。

階乗は再帰関数で簡単に計算できます。次のコードを見てみましょう。


def factorial(n):
    if n == 0:
        return 1  # 0の階乗は1と決まっています
    else:
        return n * factorial(n - 1)

この関数は、自分自身を呼び出しながらnが0になるまで繰り返します。実際に計算してみましょう。


print(factorial(5))  # 120が出力されます

120

5. 再帰関数でよく使う例②:フィボナッチ数列の計算

5. 再帰関数でよく使う例②:フィボナッチ数列の計算
5. 再帰関数でよく使う例②:フィボナッチ数列の計算

フィボナッチ数列は、最初の2つの数は1で、その後は前の2つの数の和になる数列です。例えば、1, 1, 2, 3, 5, 8, 13, ... となります。

再帰関数でフィボナッチ数列のn番目の値を求めるコードは次のようになります。


def fibonacci(n):
    if n == 1 or n == 2:
        return 1
    else:
        return fibonacci(n - 1) + fibonacci(n - 2)

この関数も自分自身を2回呼び出しながら、nが1か2になったら1を返します。


print(fibonacci(7))  # 13が出力されます

13

6. 再帰関数を使うときの注意点

6. 再帰関数を使うときの注意点
6. 再帰関数を使うときの注意点
  • 終了条件(ベースケース)を必ず作る:ないと永遠に呼び続けてエラーになります。
  • 深さに注意する:再帰が深くなりすぎると、プログラムが止まることがあります。
  • 計算コストに注意:フィボナッチ数列の再帰は計算が多くなるので、大きな数字には向きません。

大きな数を計算したい場合は別の方法を使うか、工夫が必要です。

7. まとめ(※別記事にて)

7. まとめ(※別記事にて)
7. まとめ(※別記事にて)

ここでは書きませんが、再帰関数は慣れるまで難しい部分もあります。基本の考え方と仕組みを理解して、少しずつ練習してみてください。

カテゴリの一覧へ
新着記事
New1
Django
Djangoプロジェクトのディレクトリ構造を完全解説!初心者でも迷わないフォルダの見方
New2
Flask
Flask×Flask-SocketIOでチャットアプリを作る流れを初心者向けにやさしく解説
New3
Flask
Flaskアプリの作り方を基礎から学ぼう!初心者が覚えるべき開発の流れとは?
New4
Flask
Flask-WTFでファイルアップロードフォームを完全ガイド!初心者でもわかる画像やPDFのアップロード方法
人気記事
No.1
Java&Spring記事人気No1
Django
Django環境構築の全手順を完全解説!初心者でも迷わないPython・Djangoセットアップガイド
No.2
Java&Spring記事人気No2
Flask
Flask-Loginでユーザー認証を完全ガイド!初心者でもわかるログイン処理の作り方
No.3
Java&Spring記事人気No3
Python
Pythonの文字列を1文字ずつ処理する方法!for文やlist化の活用例
No.4
Java&Spring記事人気No4
Python
PythonでHello Worldを表示するには?初心者向けに最初の1行を実行してみよう
No.5
Java&Spring記事人気No5
Python
Pythonで定数を定義する方法!変更されない変数の書き方と命名ルールを初心者向けに解説
No.6
Java&Spring記事人気No6
Python
Pythonでリストを文字列に変換する方法を完全ガイド!初心者でもわかるjoinの使い方
No.7
Java&Spring記事人気No7
Python
Pythonのmatch文(パターンマッチング)とは?switch文の代替としての使い方をやさしく解説
No.8
Java&Spring記事人気No8
Flask
FlaskアプリをNginx + Gunicornで本番運用する方法!初心者でもわかるデプロイ構成の基本