Fibonacci数,Θ(log n)

作者:infinte 来源:infinte博客 时间:2010-03-28 13:28:00 

生成Fiboncci Fn数有Θ(1),Θ(n)甚至指数级的算法,不过有Θ(log n)的吗?告诉你,有。

首先,关于Fibonacci数,有下面的定理(假设F0 = 0,n≥2)

证明可以用归纳法,n=2时不证自明,假设n=k-1时成立,那么n=k时,

现在,计算F(n)的问题就转化到计算矩阵上来。不过现在问题已经很明晰了——反复平方法。

下面是js源码:

var fib = function() {var f = function(n, a, b, p, q) {if (n == 0) return b;if (n & 1) return f(n - 1, b * q + a * q + a * p, b * p + a * q, p, q)else return f(n >>> 1, a, b, q * q + p * p, q * (2 * p + q));}return function(n) {return f(n, 1, 0, 0, 1)};}();

标签:Fibonacci,函数,数学,算法
0
投稿

猜你喜欢

  • 通向MySQL神秘王国的图形化之路

    2008-12-08 13:43:00
  • 如何检测用户第一次访问我的网站并显示友好信息?

    2009-11-25 20:33:00
  • CSS模块化设计—从空格谈起

    2007-12-15 09:41:00
  • 再谈float菜单局中

    2009-12-21 19:57:00
  • OraclePL/SQL单行函数和组函数详解

    2010-07-28 13:02:00
  • 用户如何有效地利用ORACLE数据字典

    2008-03-04 18:19:00
  • 段正淳的css笔记(1)分类之间的横竖线

    2007-11-01 21:47:00
  • asp彩色验证码的制作详解

    2007-09-18 13:22:00
  • 如何获取浏览器的更多信息?

    2009-11-23 20:48:00
  • Oracle三种上载文件技术

    2010-07-16 13:34:00
  • DW实现滚动新闻

    2007-12-03 11:35:00
  • 扩展数据库系统选项实现更高的可扩展性

    2009-01-06 11:14:00
  • 如何调用Oracle存储过程?

    2009-11-15 20:13:00
  • 根据时段自动切换你的站点CSS皮肤风格

    2007-09-20 18:08:00
  • PSD to CSS —— CSS布局实战新概念系列教程

    2009-05-30 16:40:00
  • 小看了setTimeout()

    2009-12-04 12:44:00
  • 技巧和诀窍:用Silverlight支持全屏模式

    2007-09-23 12:37:00
  • 如何控制弹出一个NTLM验证窗口?

    2009-12-16 19:01:00
  • MySQL配置文件my.cnf中文版

    2011-09-30 11:06:15
  • sqlserver中根据字符分割字符串的最好的写法分享

    2012-06-06 19:44:40
  • asp之家 网络编程 m.aspxhome.com