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

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Fibonacci程序设计 目 录 一.课程设计任务书•••••••••••••••••••••••••••••••••••••••••••••••••••••2 二.正文••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••3 1.设计目的、设计内容、时间安排•••••••••••••••••••••••••••••••••••3 2.设计环境与与工具•••••••••••••••••••••••••••••••••••••••••••••••••3 3.程序设计算法说明、流程图••••••••••••••••••••••••••••••••••••••••3 4.源程序清单••••••••••••••••••••••••••••••••••••••••••••••••••••••••5 5.运行结果记录••••••••••••••••••••••••••••••••••••••••••••••••••••••8 6. 设计结果分析•••••••••••••••••••••••••••••••••••••••••••••••••••••••8 7.参考文献及其他••••••••••••••••••••••••••••••••••••••••••••••••••••8 三.评分表•••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••9 四.封底••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••10

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值