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; }
a
、b、
temp を使用します。
a と
b にはそれぞれ 2 つの隣接する数値が格納され、
temp は計算結果を一時的に保存するために使用されます。ループ中、
i が目標アイテム数
n にループするまで、
a と
b の値を継続的に更新します。
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++ でフィボナッチ数列アルゴリズムを使用する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。