Cプログラミング
 Computer >> コンピューター >  >> プログラミング >> Cプログラミング

C言語でフィボナッチ数列を生成するプログラムの解説


整数 n が与えられたとき、0 から始めて n 項目までのフィボナッチ数列を生成するのが本記事の目的です。フィボナッチ数列は次のような形で表されます。

0, 1, 1, 2, 3, 5, 8, 13, 21, 34

この数列では、最初の 2 つの値である 0 と 1 は固定されています。それ以降は、直前の 2 つの数字を足し合わせて新しい値を作っていきます。例えば以下のようになります。

0+1=1(3番目の値)
1+1=2(4番目の値)
2+1=3(5番目の値)
…以降も同様に続きます

フィボナッチ数列の一般項 F(n) は、次の漸化式として定義できます。

Fn = Fn-1 + Fn-2
ここで、F(0)=0 および F(1)=1 は常に固定値です

フィボナッチ数列を生成する方法は複数ありますが、代表的なアプローチを 2 つ紹介します。

再帰的なアプローチ

関数が自身を呼び出すことで数列を計算する方法です。実装がシンプルで分かりやすいというメリットがありますが、計算量が指数関数的に増加してしまうため、大きな n に対しては非効率になります。

for ループを使うアプローチ

for ループを使って数列を順に生成する方法です。時間計算量を O(n) まで抑えられるため、実用的な観点から推奨される手法です。本記事でもこちらの方法を採用します。

入出力の例

入力: n=10
出力: 0 1 1 2 3 5 8 13 21 34

アルゴリズム

開始
ステップ 1 → フィボナッチ数列を出力する関数を宣言する
    void fibonacci(int n)
        変数を int a=0, b=1, c, i として宣言
        a と b を出力する
        for(i=2; i<n; ++i) のループを実行
            c = a + b を代入
            c を出力する
            a = b を代入
            b = c を代入
        ループ終了
ステップ 2 → main() 内での処理
        int 型の変数に 10 を代入
        fibonacci(n) を呼び出す
終了

C言語によるサンプルコード

#include<stdio.h>
void fibonacci(int n){
    int a=0,b=1,c,i;
    printf("%d項目までのフィボナッチ数列: ",n);
    printf("\n%d %d",a,b); // 0 と 1 を出力
    for(i=2;i<n;++i) // 0 と 1 は固定値のため、ループは 2 から開始{
        c=a+b;
        printf(" %d",c);
        a=b;
        b=c;
    }
}
int main(){
    int n=10;
    fibonacci(n);
    return 0;
}

実行結果

10項目までのフィボナッチ数列:
0 1 1 2 3 5 8 13 21 34

このように、for ループを使った実装では変数 a と b に「直前の 2 つの値」を保持しながら更新していくことで、効率的にフィボナッチ数列を求めることができます。処理は線形時間 O(n) で完了するため、n が大きくなっても安定したパフォーマンスを発揮します。


  1. Pythonでフィボナッチ数を求める方法:再帰と動的計画法の2つのアプローチを徹底解説

    本記事では、「n番目のフィボナッチ数を計算する」という問題に対する解決策と考え方を、2つの異なるアプローチ(再帰的手法と動的計画法)のコード例とともにわかりやすく解説します。 問題の概要 今回の課題は、n番目のフィボナッチ数を求めることです。 フィボナッチ数列 Fn は、次の漸化式によって定義されます。 Fn = Fn-1 + Fn-2 初期値(シード値)は以下の通りです。 F0 = 0、F1 = 1 この問題を解くには、主に次の2つの方法があります。 再帰的なアプローチ 動的計画法によるアプローチ アプローチ1:再帰的な手法 まずは、定義そのものをそのままコードに反映させた再帰的な実

  2. n番目のフィボナッチ数を求めるPythonプログラム【再帰・動的計画法】

    本記事では、n番目のフィボナッチ数を計算するPythonプログラムについて解説します。フィボナッチ数とは?フィボナッチ数とは、次の漸化式で定義される数列のことです。Fn = Fn-1 + Fn-2ただし、初期値は F0 = 0、F1 = 1 とします。フィボナッチ数列の最初のいくつかの値は以下の通りです。0, 1, 1, 2, 3, 5, 8, 13, ..................フィボナッチ数は、再帰と動的計画法(Dynamic Programming)という2つの代表的な手法で求めることができます。それでは、それぞれの実装方法をPythonスクリプトで見ていきましょう。方法1:再帰