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找到。

  • 相关阅读:
    C# 获取 PC 序列号
    C# 获取进程退出代码
    PHP mail() 函数
    PHP ezmlm_hash() 函数
    PHP Mail 函数
    PHP libxml_clear_errors() 函数
    PHP setrawcookie() 函数
    创建用户
    [FJOI2018]领导集团问题
    C# 获取进程退出代码
  • 原文地址:https://www.cnblogs.com/wpcockroach/p/2441421.html
Copyright © 2011-2022 走看看