この記事では、C言語の再帰関数を使ってフィボナッチ数列を求める方法と、その数列を表示する方法を解説します。
目次から探す
フィボナッチ数列を再帰関数で求める方法
再帰関数の実装
再帰関数を使用してフィボナッチ数列を求める方法を解説します。
再帰関数は、自身の関数内で自身を呼び出すことができる関数のことです。
フィボナッチ数列は、前の2つの数の和が次の数になる数列であり、再帰関数を使って簡潔に実装することができます。
int fibonacci(int n) {
if (n <= 1) {
return n;
}
return fibonacci(n - 1) + fibonacci(n - 2);
}
上記のコードでは、fibonacci
という再帰関数を定義しています。
引数として与えられた数n
が1以下の場合は、そのままn
を返します。
それ以外の場合は、n-1
とn-2
のフィボナッチ数列を再帰的に呼び出し、その結果を足し合わせて返します。
フィボナッチ数列を求めるアルゴリズムの解説
フィボナッチ数列を求めるアルゴリズムは、再帰関数を使って簡潔に実装することができます。
アルゴリズムの手順は以下の通りです。
- 引数として与えられた数
n
が1以下の場合は、そのままn
を返す。 - 引数として与えられた数
n
が1より大きい場合は、n-1
とn-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
入力した長さまでのフィボナッチ数列が正しく表示されることが確認できます。