Java矩阵求幂法寻找斐波那契序列
不知道如何将其映射到代码,因为这就是我要做的Java矩阵求幂法寻找斐波那契序列,java,matrix,fibonacci,exponentiation,Java,Matrix,Fibonacci,Exponentiation,不知道如何将其映射到代码,因为这就是我要做的 这里有几个Java中的斐波那契示例 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(' '); }
这里有几个Java中的斐波那契示例
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;
}
}
不确定矩阵求幂和它有什么关系。有一个所谓的Q矩阵,一个来自图片
| 1 1 | n | F(n+1) F(n) |
| 1 0 | = | F(n) F(n-1) |
Q的链乘法将生成所需的Fi。将所需次数n-1,Q与自生结果Qpow相乘,并返回Qpow[0][0]
我在我的博客上发布了一个平方的例子,.用一个简单的斐波那契序列,并试图找出一个算法来创建这个序列矩阵求幂让算法得到Ologn的运行时间我不知道如何在Lin中编码这个矩阵,尽管我知道它是如何工作的。这有点难理解。你能说得更清楚一点吗?Q在楼上,我们做Q的矩阵乘法,Q={{2,1},{1,1}}{{F3,F2},{F2,F1}我们有F3=2