今日の人気記事

  1. printf関数の変換指定子
  2. 乱数 - 1〜10のランダムな数値を出力する
  3. continue文 - ループをスキップ
  4. MinGW - gcc の環境設定(パスを通す) - Windows環境
  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. 配列に格納した数値を昇順ソートする
  3. 乱数 - 0〜1のランダムな数値を出力
  4. 入力した2つの数値を交換する
  5. 入力した自然数を逆順に並べ替える
  6. 入力した自然数の約数を求める
  7. 入力した整数が偶数か奇数かを判別する
  8. 2次方程式の解を計算する
  9. 入力した2つの自然数の最大公約数を求める
  10. 10進数を2進数に変換する

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