再帰を使ったフィボナッチ数列

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

💡 このチュートリアルは英語版からAIによって翻訳されています。原文を確認するには、 ここをクリックしてください

はじめに

この実験では、再帰を使ってフィボナッチ数列を表示する C プログラムを作成する方法を学びます。フィボナッチ数列とは、その数列の最初の 2 つの要素が 1、1 であり、それ以降の各数が前の 2 つの数の和である数列のことを指します。

新しい C ファイルを作成する

~/project/ ディレクトリに、 main.c という名前の新しい C ファイルを作成します。

必要なライブラリをインクルードする

必要な標準入出力ライブラリ stdio.h をインクルードします。

#include<stdio.h>

printFibo 関数を定義する

パラメータ aj を持つ printFibo という名前の関数を定義します。この関数は、フィボナッチ数列を表示するために使用されます。

void printFibo(int aj)
{
    static long int first = 0, second = 1, sum;
    if(aj > 1)
    {
        sum = first + second;
        first = second;
        second = sum;
        printf("%ld ", sum);
        printFibo(aj-1);    // recursive call
    }
    else
    {
        // after the elements, for line break
        printf("\n\n\n");
    }
}

main 関数を定義する

メイン関数を定義します。ユーザーからフィボナッチ数列の要素の総数を入力として受け取り、それを printFibo 関数に渡します。

int main()
{
    printf("\n\n\t\tLabEx - Best place to learn\n\n\n");
    int k, n;
    long int i = 0, j = 1;
    printf("Enter the length of the Fibonacci series: ");
    scanf("%d", &n);
    printf("\n\nFirst %d terms of the Fibonacci series are:\n\n\n",n);
    printf("%d ", 1);
    printFibo(n);
    printf("\n\n\t\t\tCoding is Fun!\n\n\n");
    return 0;
}

コードを完成させる

ここで、再帰を使ってフィボナッチ数列を表示する完全なプログラムを以下に示します。

#include<stdio.h>

// 関数を宣言
void printFibo(int);

int main()
{
    printf("\n\n\t\tLabEx - Best place to learn\n\n\n");
    int k, n;
    long int i = 0, j = 1;
    printf("Enter the length of the Fibonacci series: ");
    scanf("%d", &n);
    printf("\n\nFirst %d terms of the Fibonacci series are:\n\n\n",n);
    printf("%d ", 1);
    printFibo(n);
    printf("\n\n\t\t\tCoding is Fun!\n\n\n");
    return 0;
}

void printFibo(int aj)
{
    static long int first = 0, second = 1, sum;
    if(aj > 1)
    {
        sum = first + second;
        first = second;
        second = sum;
        printf("%ld ", sum);
        printFibo(aj-1);    // 再帰呼び出し
    }
    else
    {
        // 要素の後に改行するため
        printf("\n\n\n");
    }
}

まとめ

この実験では、再帰を使ってフィボナッチ数列を表示する C プログラムを作成する方法を学びました。関数を定義し、必要な数列を反復処理するために再帰を利用するプロセスを理解しました。