求Fibonacci数的几种方法

来源:互联网 发布:苹果6s支持4g十网络吗 编辑:程序博客网 时间:2024/04/28 13:22

先给出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函数很好实现。那么,求解斐波那契的矩阵实现可以写成:

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

原创粉丝点击