カテゴリ: PHP 更新日: 2025/10/30

PHPの再帰関数でフィボナッチ数列を計算しよう!初心者向けにやさしく解説

PHP の再帰関数を使った計算(フィボナッチ数列)
PHP の再帰関数を使った計算(フィボナッチ数列)

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

生徒

「先生、PHPでフィボナッチ数列を計算するにはどうしたらいいですか?」

先生

「PHPでは、再帰関数という仕組みを使って、フィボナッチ数列を計算できますよ。」

生徒

「再帰関数ってなんですか?難しそう…」

先生

「大丈夫です!図や例えを使ってわかりやすく説明しますね。では、PHPでの再帰関数とフィボナッチ数列の関係から見ていきましょう。」

-

1. フィボナッチ数列とは?まずは基本を確認

1. フィボナッチ数列とは?まずは基本を確認
1. フィボナッチ数列とは?まずは基本を確認

フィボナッチ数列(すうれつ)とは、「前の2つの数を足して次の数を作る」規則でできた数の列です。

たとえば、次のように続きます:

0、1、1、2、3、5、8、13、21、34...

つまり、3番目の数は「1+0=1」、4番目は「1+1=2」、5番目は「2+1=3」というふうに計算されます。

2. PHPでフィボナッチ数列を計算するには?

2. PHPでフィボナッチ数列を計算するには?
2. PHPでフィボナッチ数列を計算するには?

このフィボナッチ数列をPHPで計算するには、「関数」を使います。

さらに、同じ関数の中で自分自身を呼び出す「再帰関数(さいきかんすう)」という方法が便利です。

再帰関数とは、自分自身の中でまた同じ関数を使う仕組みです。ちょっと不思議に聞こえるかもしれませんが、処理を繰り返すのにとても便利な書き方です。

3. PHPの再帰関数でフィボナッチ数列を作る

3. PHPの再帰関数でフィボナッチ数列を作る
3. PHPの再帰関数でフィボナッチ数列を作る

では、PHPで再帰関数を使ってフィボナッチ数列を計算するプログラムを見てみましょう。


function fibonacci($n) {
    if ($n === 0) {
        return 0;
    } elseif ($n === 1) {
        return 1;
    } else {
        return fibonacci($n - 1) + fibonacci($n - 2);
    }
}

echo fibonacci(6);

このプログラムでは、fibonacciという関数が使われています。$nという数字を受け取って、
その位置のフィボナッチ数を返してくれます。

例としてfibonacci(6)を呼び出すと、6番目の値「8」が表示されます。

4. プログラムのしくみをやさしく解説

4. プログラムのしくみをやさしく解説
4. プログラムのしくみをやさしく解説

このプログラムの中で行われていることを、順番に見てみましょう。

  • $nが0の場合は0を返す
  • $nが1の場合は1を返す
  • それ以外のときは「fibonacci($n - 1) + fibonacci($n - 2)」を返す

つまり、fibonacci(6)

fibonacci(5) + fibonacci(4)を計算し、さらにその中でも再び関数が呼ばれるというように、どんどん分解していくのです。

-

5. 実行結果を確認しよう

5. 実行結果を確認しよう
5. 実行結果を確認しよう

上のPHPコードを実行すると、次のような結果が表示されます。


8

これは、フィボナッチ数列の6番目の数が「8」であることを示しています。

PHPでの再帰関数の動きを実際に見てみると、より理解が深まります。

6. 再帰関数はなぜ便利なの?

6. 再帰関数はなぜ便利なの?
6. 再帰関数はなぜ便利なの?

再帰関数の大きな特徴は、同じパターンの繰り返し処理をシンプルに書けることです。

たとえば、階段を登るときに「1段ずつ登る方法」と「2段飛ばして登る方法」があるとすると、「それぞれの方法の組み合わせ」を調べるのにも再帰関数が使えます。

こうした「分割して考える」問題には、とても相性が良いのです。

7. プログラミング初心者がつまずくポイントと対策

7. プログラミング初心者がつまずくポイントと対策
7. プログラミング初心者がつまずくポイントと対策

PHPの再帰関数を初めて学ぶときに、よくあるつまずきポイントは以下のようなものです。

  • 関数の中で同じ関数を呼び出す仕組みがイメージしにくい
  • 何回も関数が呼ばれるので、頭が混乱する
  • 結果がなぜそうなるのかが見えづらい

対策としては、「紙に書いて流れを図にする」ことをおすすめします。

たとえばfibonacci(4)の流れを図にするとこうなります:

  • fibonacci(4)
    • fibonacci(3) + fibonacci(2)
      • fibonacci(2) + fibonacci(1) + fibonacci(1) + fibonacci(0)

このように、「どの数字を使って計算されているか」を丁寧に追いかけていくと、理解がぐっと深まります。

8. 再帰関数とフィボナッチ数列の組み合わせを活かす練習

8. 再帰関数とフィボナッチ数列の組み合わせを活かす練習
8. 再帰関数とフィボナッチ数列の組み合わせを活かす練習

最後に、再帰関数を使ったフィボナッチ数列の応用例として「1〜10番目までの値をすべて表示する」プログラムを紹介します。


for ($i = 0; $i <= 10; $i++) {
    echo fibonacci($i) . ", ";
}

このように、for文(ループ)と組み合わせることで、複数のフィボナッチ数を一気に表示できます。

コメント
コメント投稿は、ログインしてください

まだ口コミはありません。

カテゴリの一覧へ
新着記事
PHPでセッションを使ってフォーム入力を保持する方法を解説!初心者向けステップバイステップ
Pythonで文字列をリストに変換する方法!split()とjoin()の使い方
Pythonの変数とは?定義方法とデータ型を初心者向けに解説
PHPでメールフォームを作る方法を徹底解説!初心者向けにmail関数とPHPMailerの使い方も紹介
人気記事
No.1
PHP&Python記事人気No1
Pythonでテキストファイルを1行ずつ読み込む方法(readline() / readlines())
No.2
PHP&Python記事人気No2
Pythonで文字列が数値か判定する方法!isdigit()・isnumeric()の違い
No.3
PHP&Python記事人気No3
Pythonのリストを辞書に変換する方法(dict() / zip())
No.4
PHP&Python記事人気No4
初心者向けにPHP でファイルを開く・読み込む・書き込む方法(fopen, fwrite, fread)を解説する記事
-