C 言語でフィボナッチ数列を生成する

CBeginner
オンラインで実践に進む

はじめに

この実験では、C 言語でフィボナッチ数列を生成する方法を学びます。フィボナッチ数列は、各数がその直前の 2 つの数の和である、よく知られた数学的な数列です。ユーザーから項数を取得し、ループを使用して数列を生成し、最後に結果のフィボナッチ数列を出力します。この実験は、C プログラミング言語を用いた数論と離散数学の基本的な概念を扱っています。

項数の入力

このステップでは、C 言語でフィボナッチ数列を生成するための項数を取得する方法を学びます。これは、フィボナッチ数列プログラムを作成する最初の重要なステップです。

まず、~/project ディレクトリに新しい C ファイルを作成しましょう。

cd ~/project
nano fibonacci.c

次に、ユーザーから項数を取得するための初期コードを記述します。

#include <stdio.h>

int main() {
    int n;

    printf("フィボナッチ数列の項数を入力してください:");
    scanf("%d", &n);

    printf("%d個の項を入力しました。\n", n);

    return 0;
}

コンパイルしてプログラムを実行し、入力をテストしてみましょう。

gcc fibonacci.c -o fibonacci
./fibonacci

出力例:

フィボナッチ数列の項数を入力してください: 10
10個の項を入力しました。
説明
  • scanf("%d", &n) は、ユーザーからの整数入力を読み取り、変数 n に格納します。
  • printf() を使用して、ユーザーにプロンプトを表示し、入力された項数を表示します。
  • このプログラムは、数列の長さに関するユーザー入力を正常に取得できることを検証します。

ループを用いた項の生成

このステップでは、ループを用いてフィボナッチ数列を生成するように、前のフィボナッチ数列プログラムを修正します。前のステップのコードを基に、実際のフィボナッチ数列を作成します。

fibonacci.c ファイルを更新しましょう。

cd ~/project
nano fibonacci.c

次に、for ループを使用してフィボナッチ項を生成するようにコードを修正します。

#include <stdio.h>

int main() {
    int n, first = 0, second = 1, next;

    printf("フィボナッチ数列の項数を入力してください:");
    scanf("%d", &n);

    printf("%d項のフィボナッチ数列:\n", n);

    for (int i = 0; i < n; i++) {
        if (i <= 1)
            next = i;
        else {
            next = first + second;
            first = second;
            second = next;
        }
        printf("%d ", next);
    }
    printf("\n");

    return 0;
}

プログラムをコンパイルして実行します。

gcc fibonacci.c -o fibonacci
./fibonacci

出力例:

フィボナッチ数列の項数を入力してください: 10
10項のフィボナッチ数列:
0 1 1 2 3 5 8 13 21 34
説明
  • firstsecond をフィボナッチ数列の最初の 2 つの項として初期化します。
  • for ループは、前の 2 つの項を加えることで、後の項を生成します。
  • next = first + second は次の項を計算します。
  • 各反復で firstsecond を更新して、数列の進行を維持します。
  • ループは、指定された数の項が生成されるまで続行します。

数列の出力

この最終ステップでは、フィボナッチ数列プログラムを強化し、フォーマットオプションを追加して出力の表示を改善します。

fibonacci.c ファイルを更新して、数列の出力方法を改善しましょう。

cd ~/project
nano fibonacci.c

コードを修正して、よりフォーマットされた出力オプションを追加します。

#include <stdio.h>

int main() {
    int n, first = 0, second = 1, next;

    printf("フィボナッチ数列の項数を入力してください:");
    scanf("%d", &n);

    printf("%d項のフィボナッチ数列:\n", n);

    printf("インデックス\t値\n");
    printf("-------\t-----\n");

    for (int i = 0; i < n; i++) {
        if (i <= 1)
            next = i;
        else {
            next = first + second;
            first = second;
            second = next;
        }
        printf("%d\t%d\n", i, next);
    }

    return 0;
}

プログラムをコンパイルして実行します。

gcc fibonacci.c -o fibonacci
./fibonacci

出力例:

フィボナッチ数列の項数を入力してください: 8
8項のフィボナッチ数列:
インデックス	値
-------	-----
0	0
1	1
2	1
3	2
4	3
5	5
6	8
7	13
説明
  • インデックスと値の列を持つフォーマットされた表を追加しました。
  • \t はタブ区切りで、整然とした表レイアウトを作成するために使用されています。
  • 各項は、対応するインデックスとともに出力されます。
  • 出力は、フィボナッチ数列を明確で構造化された形で表示します。

まとめ

この実験では、C 言語でユーザーから項数を取得し、フィボナッチ数列を生成する方法を学びました。最初に、ユーザーに希望する項数を入力するように促し、ループを使用してフィボナッチ数列を計算して出力します。重要なステップは、最初の 2 つのフィボナッチ数を初期化し、ループの各反復でそれらを更新して数列の次の数を生成することです。

最後に、ユーザーが入力した値に基づいて、完全なフィボナッチ数列を出力します。この実験は、ループと変数を使用してプログラミング言語で古典的な数学的数列を生成する実用的な例を示しています。