c_cpp Fibonacci(矩阵取幂); O(日志(N))

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c_cpp Fibonacci(矩阵取幂); O(日志(N))相关的知识,希望对你有一定的参考价值。

// Compute nth Fibonacci number with matrix exponentiation
// Time complexity: O(log(n))

// Warning: 46th Fibonacci number (i.e. fib(46)) is largest
// that will fit into signed 32-bit integer; use long long if need
// longer.
int f[1000];
int fib(int n) {
  if (n < 2) return n;
  if (f[n]) return f[n];

  int k = (n + 1) / 2;
  f[n] = (n & 1) ? fib(k) * fib(k) + fib(k - 1) * fib(k - 1)
                 : (2 * fib(k - 1) + fib(k)) * fib(k);
  return f[n];
}

以上是关于c_cpp Fibonacci(矩阵取幂); O(日志(N))的主要内容,如果未能解决你的问题,请参考以下文章

c_cpp Fibonacci与递归

uva10229-模Fibonacci

c_cpp int fibonacci(int n)

Fibonacci数列--矩阵乘法优化

Fibonacci-PEG,LDPC基于Fibonacci-PEG算法的LDPC码校验矩阵的构造

poj3070Fibonacci 矩阵快速幂