C/C++でn番目のフィボナッチ数を求めるプログラムの書き方
フィボナッチ数列とは、「直前の2項の和が次の項になる」という規則性を持つ数列です。最初の2項は 0 と 1 から始まります。
本記事では、フィボナッチ数列のn番目までの値をすべて計算して出力するプログラムを、C/C++を使って解説します。forループを用いて「前の2項の和」を順に求めていく、最も基本的な実装方法を紹介します。
入出力例
入力:8 出力:0 1 1 2 3 5 8 13
n = 8 を指定した場合、8項目までのフィボナッチ数が順番に出力されます。
計算の流れ
0+1=1 1+1=2 1+2=3 2+3=5
このように、直前の2項を足し合わせることで次の項が決まっていきます。これを繰り返すことで数列全体を生成できます。
C++での実装例(forループを使用)
#include<iostream>
using namespace std;
int main() {
int t1=0,t2=1,n,i,nextTerm;
n = 8;
for ( i = 1; i <= n; ++i) {
if(i == 1) {
cout << " " << t1 ;
continue;
}
if(i == 2) {
cout << " " << t2 << " " ;
continue;
}
nextTerm = t1 + t2 ;
t1 = t2 ;
t2 = nextTerm ;
cout << nextTerm << " ";
}
}実行結果
0 1 1 2 3 5 8 13
コードのポイント
- t1 と t2:それぞれ「1つ前」と「2つ前」の項を保持する変数です。初期値は 0 と 1。
- i == 1 / i == 2 の分岐:最初の2項は計算不要のため、そのまま出力して次のループへ進みます(continue)。
- nextTerm:t1 + t2 の和として新しい項を求めます。
- 変数の更新:t1 に t2 の値を、t2 に nextTerm の値を代入することで、次回の計算に備えます。
この方法は時間計算量 O(n)、空間計算量 O(1) と効率的で、フィボナッチ数を求める際の基本となるアプローチです。再帰関数を使う方法や行列累乗による高速化などもありますが、まずはこのシンプルな反復処理を確実に理解しておくことが重要です。
-
PythonでN番目のフィボナッチ数を求める方法|再帰と動的計画法を解説
この記事では、Pythonを使ってN番目のフィボナッチ数を計算する方法を解説します。 フィボナッチ数とは フィボナッチ数は、次の漸化式によって定義される数列です。 Fn = Fn-1 + Fn-2 初期値は F0 = 0、F1 = 1 となります。したがって、フィボナッチ数列の最初のいくつかの項は以下のようになります。 0, 1, 1, 2, 3, 5, 8, 13, ………… フィボナッチ数を求めるには、大きく分けて「再帰」と「動的計画法」の2つのアプローチがあります。それぞれの実装方法をPythonスクリプトで見ていきましょう。 方法1:再帰を使うアプローチ まずは最も直感的な再帰による実
-
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:再帰