C言語でフィボナッチ数列を求めるプログラムの作り方
フィボナッチ数列とは、「直前の2つの数を足し合わせる」という規則によって生成される数列のことです。
フィボナッチ数列は、f0 と f1 という2つの初期値から始まります。この初期値には「0, 1」または「1, 1」のいずれかの組み合わせを用いるのが一般的です。
フィボナッチ数列は、次の漸化式で表される条件を満たします。
fn = fn-1 + fn-2
アルゴリズム
フィボナッチ数列を求めるための基本的なアルゴリズムは以下の通りです。
START(開始) 手順1:整数変数 a, b, c を実行時に読み込む 手順2:a = 0、b = 1 として初期化する 手順3:c = a + b を計算する 手順4:c を出力する 手順5:a = b、b = c を代入する 手順6:手順3〜5を n 回繰り返す STOP(終了)
Cプログラムの例
以下は、whileループを使用してフィボナッチ数列を出力するCプログラムの例です。
#include <stdio.h>
int main(){
int number, i = 0, Next, first = 0, second = 1;
printf("\n Please Enter the Range Number: ");
scanf("%d",&number);
while(i < number){
if(i <= 1){
Next = i;
}
else{
Next = first + second;
first = second;
second = Next;
}
printf("%d \t", Next);
i++;
}
return 0;
}プログラムのポイント
- 変数
firstとsecondに、それぞれ初期値 0 と 1 を設定しています。 - i が 0 または 1 の間はそのまま値を出力し、i が 2 以降になった時点で「直前の2項の和」を計算して出力します。
- 毎回の出力後に
firstとsecondの値を更新することで、数列を順番に生成していきます。
実行結果
上記のプログラムをコンパイルして実行すると、範囲となる数値の入力を求められます。たとえば「6」を入力した場合、次のような結果が出力されます。
Please Enter the Range Number: 6 0 1 1 2 3 5
このように、whileループと2つの変数を使うだけで、指定した項数分のフィボナッチ数列を簡単に生成することができます。forループや再帰関数を使った実装方法もありますので、学習の一環として比較してみると理解が深まります。
-
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:再帰
-
【Python】与えられた数がフィボナッチ数かどうかを判定する方法を解説
本記事では、以下の問題文に対する解決策について詳しく学んでいきます。 問題の定義 数値 n が与えられたとき、その数がフィボナッチ数であるかどうかを判定します。 ご存知のとおり、n番目のフィボナッチ数は「直前の2つのフィボナッチ数の和」として定義されます。しかし、この漸化式以外にも、フィボナッチ数には興味深い数学的な性質が存在します。 フィボナッチ数の判定に使える重要な性質 ある数 n がフィボナッチ数であるのは、次の条件が成り立つ場合、かつその場合に限られます。 5×n² + 4 が完全平方数である または 5×n² − 4 が完全平方数である つまり、上記のどちらか一方(または両方)が