推荐星级:
  • 1
  • 2
  • 3
  • 4
  • 5

矩阵快速幂与斐波那契数列的O(log n)解法.docx

资料介绍

矩阵快速幂与斐波那契数列的O(log n)解法

一、问题的提出

计算斐波那契数列的第n项是一个经典问题。朴素递归的时间复杂度为 O(2ⁿ),线性迭代为 O(n)。但通过矩阵快速幂,可以在 O(log n) 时间内计算出第n项。

三、矩阵快速幂的实现

3.1 矩阵定义与乘法

typedef struct {
    long long a[2][2];
} Matrix2;

Matrix2 matrixMultiply(Matrix2 m1, Matrix2 m2) {
    Matrix2 result;
    result.a[0][0] = m1.a[0][0] * m2.a[0][0] + m1.a[0][1] * m2.a[1][0];
    result.a[0][1] = m1.a[0][0] * m2.a[0][1] + m1.a[0][1] * m2.a[1][1];
    result.a[1][0] = m1.a[1][0] * m2.a[0][0] + m1.a[1][1] * m2.a[1][0];
    result.a[1][1] = m1.a[1][0] * m2.a[0][1] + m1.a[1][1] * m2.a[1][1];
    return result;
}

3.2 矩阵快速幂

Matrix2 matrixPower(Matrix2 base, long long n) {
    Matrix2 result = {1, 0, 0, 1};   // 单位矩阵
    
    while (n > 0) {
        if (n & 1) {
            result = matrixMultiply(result, base);
        }
        base = matrixMultiply(base, base);


部分文件列表

文件名 大小
矩阵快速幂与斐波那契数列的O(log_n)解法.docx 38K

全部评论(0)

暂无评论

上传资源 上传优质资源有赏金

  • 打赏
  • 30日榜单

推荐下载