zoukankan      html  css  js  c++  java
  • 求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找到。

  • 相关阅读:
    Java中如何解决double和float精度不准的问题
    Linux防火墙Firewall和Iptables的使用
    yum 彻底删除nodejs,重新安装
    hbase集群搭建参考资料
    10分钟教你打造一个微信语音点歌系统
    微信公众平台向特定用户推送消息
    圆角与半角互相转换
    Swagger简单介绍
    测试通过!为何线上还有很多BUG?实践中的质量控制
    AXURE插件在 Chrome 浏览器中用不了怎么办?
  • 原文地址:https://www.cnblogs.com/wpcockroach/p/2441421.html
Copyright © 2011-2022 走看看