ホームページ > バックエンド開発 > C++ > C++ でフィボナッチ数列アルゴリズムを使用する方法

C++ でフィボナッチ数列アルゴリズムを使用する方法

WBOY
リリース: 2023-09-19 10:15:38
オリジナル
1393 人が閲覧しました

C++ でフィボナッチ数列アルゴリズムを使用する方法

C でフィボナッチ数列アルゴリズムを使用する方法

フィボナッチ数列は非常に古典的な数列であり、その定義は、各数値が最初の 2 つの数値の合計であることです。 。コンピューター サイエンスでは、C プログラミング言語を使用してフィボナッチ数列アルゴリズムを実装することは、基本的かつ重要なスキルです。この記事では、C を使用してフィボナッチ数列アルゴリズムを作成する方法を紹介し、具体的なコード例を示します。

1. 再帰的手法

再帰的手法は、フィボナッチ数列アルゴリズムの一般的な手法です。 C では、フィボナッチ数列アルゴリズムは再帰を使用して簡潔に実装できます。以下は、再帰的手法を使用してフィボナッチ数を計算するコード例です。

#include <iostream>
using namespace std;

int fibonacci(int n) {
    if (n <= 1)
        return n;
    else
        return fibonacci(n - 1) + fibonacci(n - 2);
}

int main() {
    int num;
    cout << "请输入你要计算的斐波那契数列的项数:";
    cin >> num;
    cout << "斐波那契数列的第" << num << "项为:" << fibonacci(num) << endl;
    return 0;
}
ログイン後にコピー

上記のコードでは、## 番目のフィボナッチ数列 #n# を計算する関数 fibonacci を定義します。 ## 個のアイテム。 n<=1 の場合は、n を直接返します。それ以外の場合は、再帰式 fibonacci(n) = fibonacci(n-1) fibonacci(n-2)## を使用します。 # 結果を計算します。 2. 反復法

再帰的方法に加えて、反復法を使用してフィボナッチ数列を計算することもできます。反復法を使用してフィボナッチ数を計算するサンプル コードを次に示します。

#include <iostream>
using namespace std;

int fibonacci(int n) {
    if (n <= 1)
        return n;

    int a = 0;
    int b = 1;
    int temp;
    for (int i = 2; i <= n; i++) {
        temp = a + b;
        a = b;
        b = temp;
    }
    return b;
}

int main() {
    int num;
    cout << "请输入你要计算的斐波那契数列的项数:";
    cin >> num;
    cout << "斐波那契数列的第" << num << "项为:" << fibonacci(num) << endl;
    return 0;
}
ログイン後にコピー

上記のコードでは、ループを使用して、最初の 2 つの数値から開始してフィボナッチ数列の各項を計算します。 3 つの変数

a

btemp を使用します。ab にはそれぞれ 2 つの隣接する数値が格納され、temp は計算結果を一時的に保存するために使用されます。ループ中、i が目標アイテム数 n にループするまで、ab の値を継続的に更新します。 3. 再帰的手法と反復手法の効率の比較

実際のプログラミングでは、フィボナッチ数列アルゴリズムの効率を考慮する必要があります。再帰的メソッドと反復的メソッドの間でパフォーマンスを比較できます。以下に簡単な評価コード例を示します。

#include <iostream>
#include <chrono>
using namespace std;
using namespace std::chrono;

int fibonacci_recursive(int n) {
    if (n <= 1)
        return n;
    else
        return fibonacci_recursive(n - 1) + fibonacci_recursive(n - 2);
}

int fibonacci_iterative(int n) {
    if (n <= 1)
        return n;

    int a = 0;
    int b = 1;
    int temp;
    for (int i = 2; i <= n; i++) {
        temp = a + b;
        a = b;
        b = temp;
    }
    return b;
}

int main() {
    int num;
    cout << "请输入你要计算的斐波那契数列的项数:";
    cin >> num;

    high_resolution_clock::time_point t1 = high_resolution_clock::now();
    int result_recursive = fibonacci_recursive(num);
    high_resolution_clock::time_point t2 = high_resolution_clock::now();
    auto duration_recursive = duration_cast<microseconds>(t2 - t1).count();

    high_resolution_clock::time_point t3 = high_resolution_clock::now();
    int result_iterative = fibonacci_iterative(num);
    high_resolution_clock::time_point t4 = high_resolution_clock::now();
    auto duration_iterative = duration_cast<microseconds>(t4 - t3).count();

    cout << "递归方法计算结果:" << result_recursive << endl;
    cout << "递归方法计算时间:" << duration_recursive << "微秒" << endl;
    cout << "迭代方法计算结果:" << result_iterative << endl;
    cout << "迭代方法计算时间:" << duration_iterative << "微秒" << endl;

    return 0;
}
ログイン後にコピー
上記のコードを実行し、フィボナッチ数列の項目数を入力して、再帰的手法と反復的手法の計算結果と時間を比較します。

概要:

この記事では、C で再帰的および反復的メソッドを使用してフィボナッチ数列を計算する方法を紹介し、具体的なコード例を示します。再帰的方法と反復的方法の両方で、フィボナッチ数列を効率的に計算できます。実際のアプリケーションでは、特定のニーズに応じて適切な方法を選択し、アルゴリズムの効率を考慮する必要があります。

以上がC++ でフィボナッチ数列アルゴリズムを使用する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート