【C言語】再帰関数でフィボナッチ数列を求めて表示する方法を解説

この記事では、C言語の再帰関数を使ってフィボナッチ数列を求める方法と、その数列を表示する方法を解説します。

目次から探す

フィボナッチ数列を再帰関数で求める方法

再帰関数の実装

再帰関数を使用してフィボナッチ数列を求める方法を解説します。

再帰関数は、自身の関数内で自身を呼び出すことができる関数のことです。

フィボナッチ数列は、前の2つの数の和が次の数になる数列であり、再帰関数を使って簡潔に実装することができます。

int fibonacci(int n) {
    if (n <= 1) {
        return n;
    }
    return fibonacci(n - 1) + fibonacci(n - 2);
}

上記のコードでは、fibonacciという再帰関数を定義しています。

引数として与えられた数nが1以下の場合は、そのままnを返します。

それ以外の場合は、n-1n-2のフィボナッチ数列を再帰的に呼び出し、その結果を足し合わせて返します。

フィボナッチ数列を求めるアルゴリズムの解説

フィボナッチ数列を求めるアルゴリズムは、再帰関数を使って簡潔に実装することができます。

アルゴリズムの手順は以下の通りです。

  1. 引数として与えられた数nが1以下の場合は、そのままnを返す。
  2. 引数として与えられた数nが1より大きい場合は、n-1n-2のフィボナッチ数列を再帰的に呼び出し、その結果を足し合わせて返す。

このアルゴリズムを再帰関数を使って実装することで、簡潔にフィボナッチ数列を求めることができます。

フィボナッチ数列を表示する方法

フィボナッチ数列を表示するプログラムの実装

先ほど実装した再帰関数を使って、フィボナッチ数列を表示するプログラムを作成します。

#include <stdio.h>
void printFibonacci(int n) {
    int i;
    for (i = 0; i < n; i++) {
        printf("%d ", fibonacci(i));
    }
}
int main() {
    int n;
    printf("フィボナッチ数列の長さを入力してください:");
    scanf("%d", &n);
    printFibonacci(n);
    return 0;
}

上記のコードでは、printFibonacciという関数を定義しています。

引数として与えられた数nまでのフィボナッチ数列を表示します。

main関数では、ユーザーにフィボナッチ数列の長さを入力してもらい、printFibonacci関数を呼び出してフィボナッチ数列を表示します。

プログラムの実行結果の確認

上記のプログラムを実行すると、ユーザーにフィボナッチ数列の長さを入力してもらい、その長さまでのフィボナッチ数列が表示されます。

以下に実行結果の例を示します。

フィボナッチ数列の長さを入力してください:10
0 1 1 2 3 5 8 13 21 34

入力した長さまでのフィボナッチ数列が正しく表示されることが確認できます。

目次から探す