C++ でフィボナッチ数を生成する
胡金庫
2023年10月12日
この記事では、C++ でフィボナッチ数を生成する方法の複数の方法を示します。
C++ は反復法を使用してフィボナッチ数列の最初の n
項目を出力する
フィボナッチ数は、数学では一般に一連の数として知られており、各項目は、0
と 1
から始まる 2つの先行する数の合計です。このサンプルコードでは、ユーザーの入力を整数 n
として受け取り、フィボナッチ数列の最初の n
数を生成します。解決策は単純な反復であり、開始値を初期化し、n-3
回反復して前の値を合計します。反復ごとに、合計が cout
ストリームに出力され、格納された値が 1つの数値ウィンドウだけシフトされます。入力整数-0
をチェックし、対応する値を出力する if
条件が実装されていることに注意してください。最初の cout
ステートメントは、for
ループ条件が false と評価されて続行しないため、n
が 2
に等しい場合を処理します。
#include <iostream>
using std::cin;
using std::cout;
using std::endl;
using std::string;
void generateFibonacci(unsigned long long n) {
if (n == 1) {
cout << 0 << endl;
return;
}
unsigned long long a = 0;
unsigned long long b = 1;
unsigned long long c;
cout << a << " " << b;
for (unsigned long long i = 3; i <= n; i++) {
c = a + b;
cout << " " << c;
a = b;
b = c;
}
}
int main() {
unsigned long long num;
cout << "Enter the number of items to generate Fibonacci series: ";
cin >> num;
generateFibonacci(num);
return EXIT_SUCCESS;
}
出力:
Enter the number of items to generate Fibonacci series: 10
0 1 1 2 3 5 8 13 21 34
C++ は反復法を使用してフィボナッチ数列の n
番目の項目を出力する
または、フィボナッチ数列の n
番目の数を返す関数を実装することもできます。組み込みの C++ タイプで格納できる最大の数値を出力できるようにするため、ユーザー入力を unsigned long long
に格納することに注意してください。関数は if-else
ステートメントで始まり、最初の 3つのケースをチェックし、ハードコードされた値を返します。一方、n
が 3
より大きい場合は、ループブロックに進み、シーケンスの n
番目の数が得られるまで繰り返します。
#include <iostream>
using std::cin;
using std::cout;
using std::endl;
using std::string;
unsigned long long generateFibonacci(unsigned long long n) {
if (n == 1) {
return 0;
} else if (n == 2 || n == 3) {
return 1;
}
unsigned long long a = 1;
unsigned long long b = 1;
unsigned long long c;
for (unsigned long long i = 3; i < n; i++) {
c = a + b;
a = b;
b = c;
}
return c;
}
int main() {
unsigned long long num;
cout << "Enter the n-th number in Fibonacci series: ";
cin >> num;
cout << generateFibonacci(num);
cout << endl;
return EXIT_SUCCESS;
}
出力:
Enter the n-th number in Fibonacci series: 10
34
著者: 胡金庫