wpcockroach

导航

求Fibonacci数的几种方法

先给出Fibonacci的定义:

Fibonacci

简单地总结了下,至少有5中方法来求Fibonacci(n)。

  1. 直接带公式
  2. 简单递归
  3. 循环
  4. 改进的递归
  5. 使用矩阵

这里主要介绍下如何用矩阵来求F(n)。

 直接公式

Fibonacci公式

简单递归

循环

改进的递归

  

使用矩阵

首先,我们要构造出一个合适的矩阵运算式。下面是其中一种选择方案:

Fibonacci的矩阵运算式

很显然,这是一个递归定义式。我们可以进一步进行转化。

转化后的Fibonacci矩阵公式图

我们可以看到,F(n)事实上就等于上述公式中第二个矩阵n-1次幂后下标为(0,0)的元素值。现在的问题转化到如何快速地求解矩阵的幂运算。可以参考之前的一篇Blog:Exponentiation 的 O(logn) 算法。那么我们可以设计一个快速的矩阵幂运算实现方式。

  

其中的Square和Product函数很好实现。那么,求解斐波那契的矩阵实现可以写成:

关于上面介绍的矩阵运算,可以很好的运用到HDU1005ZJUT1026。参考解答可以在HDU1005ZJUT1026找到。

posted on 2009-03-14 20:37  wpcockroach  阅读(365)  评论(0编辑  收藏  举报