C++ でフィボナッチ数を生成する

胡金庫 2023年10月12日
  1. C++ は反復法を使用してフィボナッチ数列の最初の n 項目を出力する
  2. C++ は反復法を使用してフィボナッチ数列の n 番目の項目を出力する
C++ でフィボナッチ数を生成する

この記事では、C++ でフィボナッチ数を生成する方法の複数の方法を示します。

C++ は反復法を使用してフィボナッチ数列の最初の n 項目を出力する

フィボナッチ数は、数学では一般に一連の数として知られており、各項目は、01 から始まる 2つの先行する数の合計です。このサンプルコードでは、ユーザーの入力を整数 n として受け取り、フィボナッチ数列の最初の n 数を生成します。解決策は単純な反復であり、開始値を初期化し、n-3 回反復して前の値を合計します。反復ごとに、合計が cout ストリームに出力され、格納された値が 1つの数値ウィンドウだけシフトされます。入力整数-0 をチェックし、対応する値を出力する if 条件が実装されていることに注意してください。最初の cout ステートメントは、for ループ条件が false と評価されて続行しないため、n2 に等しい場合を処理します。

#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つのケースをチェックし、ハードコードされた値を返します。一方、n3 より大きい場合は、ループブロックに進み、シーケンスの 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
著者: 胡金庫
胡金庫 avatar 胡金庫 avatar

DelftStack.comの創設者です。Jinku はロボティクスと自動車産業で8年以上働いています。自動テスト、リモートサーバーからのデータ収集、耐久テストからのレポート作成が必要となったとき、彼はコーディングスキルを磨きました。彼は電気/電子工学のバックグラウンドを持っていますが、組み込みエレクトロニクス、組み込みプログラミング、フロントエンド/バックエンドプログラミングへの関心を広げています。

LinkedIn Facebook

関連記事 - C++ Math