用于查找Fibonacci序列的Java矩阵求幂

时间:2015-02-10 22:33:54

标签: java matrix fibonacci exponentiation

想知道如何将其映射到代码,就像我必须要完成的那样 http://puu.sh/fKuyF/815515d66f.png

2 个答案:

答案 0 :(得分:0)

这里值得一提的是Java中的几个Fibonacci示例。

public class Fibonacci
{
    public static void main(final String[] args) {
        for (int i = 0; i < 20; i++) {
            System.out.print(fib1(i));
            System.out.print(' ');
        }
        System.out.println();
        for (int i = 0; i < 20; i++) {
            System.out.print(fib2(i));
            System.out.print(' ');
        }
    }

    // naive recursive implementation
    static int fib1(int n) {
        if (n < 2) return n;
        return fib1(n - 1) + fib1(n - 2);
    }

    // dynamic programming implementation
    static int fib2(int n) {
        if (n < 2) return n;
        int n2 = 0, n1 = 1;
        for (int i = 2; i <= n; i++) {
            int n0 = n1 + n2;
            n2 = n1;
            n1 = n0;
        }
        return n1;
    }
}

不确定矩阵取幂与它有什么关系。

答案 1 :(得分:0)

有所谓的Q矩阵,一张来自图片

| 1 1 | n      | F(n+1) F(n)   |
| 1 0 |    =   | F(n)   F(n-1) |

Q的链乘法将产生期望的F(i)。将所需的次数,n-1,Q与自生成结果Qpow相乘并返回Qpow[0][0]

我在我的博客take a look there for Java implementation上发布了平方示例。