斐波那契数列生成矩阵方法C++
时间: 2023-11-03 12:15:31 浏览: 104
《C++程序设计》习题解答
斐波那契数列可以使用矩阵乘法的方法来快速计算,以下是使用矩阵乘法生成斐波那契数列的 C++ 代码:
```c++
#include <iostream>
#include <vector>
using namespace std;
// 矩阵乘法
vector<vector<long long>> matrix_multiply(const vector<vector<long long>>& A, const vector<vector<long long>>& B)
{
int n = A.size(), m = B[0].size();
vector<vector<long long>> C(n, vector<long long>(m, 0));
for(int i = 0; i < n; i++)
{
for(int j = 0; j < m; j++)
{
for(int k = 0; k < B.size(); k++)
{
C[i][j] += A[i][k] * B[k][j];
}
}
}
return C;
}
// 矩阵快速幂
vector<vector<long long>> matrix_pow(const vector<vector<long long>>& A, int n)
{
if(n == 1) return A;
vector<vector<long long>> half = matrix_pow(A, n / 2);
if(n % 2 == 0)
{
return matrix_multiply(half, half);
}
else
{
return matrix_multiply(matrix_multiply(half, half), A);
}
}
// 生成斐波那契数列的矩阵方法
long long fibonacci_sequence(int n)
{
if(n <= 0) return 0;
vector<vector<long long>> A{{1, 1}, {1, 0}};
vector<vector<long long>> res = matrix_pow(A, n - 1);
return res[0][0];
}
int main()
{
int n;
cin >> n;
cout << fibonacci_sequence(n) << endl;
return 0;
}
```
使用时,调用 `fibonacci_sequence` 函数传入需要计算的斐波那契数列的项数即可。
阅读全文