今日の人気記事

  1. 浮動小数点数型(float型 double型)の最大値と最小値 - float.h
  2. printf関数の変換指定子
  3. MinGW - gcc の環境設定(パスを通す) - Windows環境
  4. 1から1000までの素数を表示する
  5. 入力した複数の文字列をソート

フィボナッチ数の計算する

当ページのリンクには広告が含まれています。

スポンサーリンク

ここでは「フィボナッチ数を計算」し、フィボナッチ数列を表示するサンプルプログラムを紹介します。

フィボナッチ数

\(n\)番目のフィボナッチ数\(F_n\)は

\[ \begin{aligned} F_0 &= 0\\ F_1 &= 1\\ F_{n+2} &= F_{n} + F_{n+1} (n\geq1) \end{aligned} \]

で定義されます。

実際に\(n=0\)から計算してみると \[ \begin{aligned} F_0 &= 0\\ F_1 &= 1\\ F_2 &= 1 = 0 + 1\\ F_3 &= 2 = 1 + 1\\ F_4 &= 3 = 1 + 2\\ F_5 &= 5 = 2 + 3\\ F_6 &= 8 = 3 + 5\\ F_7 &= 13 = 5 + 8\\ \cdots \end{aligned} \]

となり、計算結果を並べた数列

0,1,1,2,3,5,8,13,21,34,55,89,144,233,377,...

を「フィボナッチ数列」といいます。

それではプログラムでフィボナッチ数を計算してみましょう。

サンプルプログラム

10000より小さいフィボナッチ数を計算するサンプルプログラムです。

/*
 * C言語のサンプルプログラム - Webkaru
 * - フィボナッチ数の計算 -
 */
#include <stdio.h>

int main(void)
{
  /* 変数の宣言 */
  int n;
  int f0, f1, f2;

  f0 = 0;
  f1 = 1;

  /* フィボナッチ数(n=0)の出力 */
  printf("%d\n", f0);

  /* フィボナッチ数の計算 */
  while(f1<100000) {
    // フィボナッチ数の出力(n>0)
    printf("%d\n", f1);
    // フィボナッチ数の計算
    f2 = f1 + f0;
    // 変数の代入
    f0 = f1;
    f1 = f2;
  }

  return 0;
}

実行結果です。

0
1
1
2
3
5
8
13
21
34
55
89
144
233
377
610
987
1597
2584
4181
6765
10946
17711
28657
46368
75025

このように計算したフィボナッチ数が出力されます。

サンプルプログラム の人気記事

  1. 入力した2つの自然数の最大公約数を求める
  2. サンプルプログラム集
  3. 配列に格納した数値を降順ソートする
  4. 配列に格納した数値を昇順ソートする
  5. 10進数を2進数に変換する
  6. 入力した文字がアルファベットか数字かを判定する
  7. 入力した自然数が素数かどうかを判定する
  8. 乱数 - 1〜10のランダムな数値を出力する
  9. 入力した2つの数値の掛け算・割り算する
  10. 入力した文字列の文字数を表示する(出力)

関連記事(一部広告含む)