首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 其他教程 > 其他相关 >

斐波纳契据数列(Fibonacci Sequence)

2012-11-26 
斐波纳契数列(Fibonacci Sequence)斐波纳契数列(Fibonacci Sequence) 0.前言很久以前就想写一些竞赛学习的

斐波纳契数列(Fibonacci Sequence)

斐波纳契数列(Fibonacci Sequence) 

斐波纳契据数列(Fibonacci Sequence)

0.前言

   很久以前就想写一些竞赛学习的总结,但是由于之前事情比较多,导致计划不断的减缓。现在,大学教学任务的考试已经全部结束了,而比赛也告一段落,所以有时间来整理一下之前学过的东西。不久前,在做比赛的时候遇到了这样一个问题:求出第N个斐波纳契数的前M位和后K位。所以就将斐波纳契数列(Fibonacci Sequence)作为第一步吧。(后面我简称斐波那契数列为Fib,函数Fib(x),代表第x个斐波那契数)

1.从兔子说起

    问题:一般而言,兔子在出生两个月后,就有繁殖能力,一对兔子每个月能生出一对小兔子来。如果所有兔都不死,那么一年以后可以繁殖多少对兔子?

    解: 幼仔对数 = 前月成兔对数  

            成兔对数 = 前月成兔对数+前月幼仔对数  

            总体对数 = 本月成兔对数+本月幼仔对数 

            得到通向公式:an+2 = an+1 + an,a1 = a2 = 1

    这就是Fib的由来和递推公式的计算。

2.Fib的计算1:递推公式

利用递推公式:Fib(n+2) = Fib(n+1) + Fib(n),Fib(1) = Fib(2) = 1

可以直接想到最简单的计算方法,递归运算。

代码:

 其中 斐波纳契据数列(Fibonacci Sequence)

这个可以用数学归纳法简单的证明,这里就不做证明。

然后我们把上面的快速幂算法应用到矩阵中,就得到了一个对数级的Fib算法。

代码:


其正确性可以通过数学归纳法证明。

这里我们又回到了快速幂的计算上来了。

代码:

这个可以用通向公式简单的证明。在做二分查找的时候可以利用黄金比例分为而不是对半分割,可能会效率更高。

自然界中对于黄金分割的诠释无处不在,最后在这里贴几张图片来感受一下他的神奇:

斐波纳契据数列(Fibonacci Sequence) 斐波纳契据数列(Fibonacci Sequence)

这两张图片是从下面的图片中抽象出来的:

斐波纳契据数列(Fibonacci Sequence)斐波纳契据数列(Fibonacci Sequence)斐波纳契据数列(Fibonacci Sequence)

斐波纳契据数列(Fibonacci Sequence)斐波纳契据数列(Fibonacci Sequence)斐波纳契据数列(Fibonacci Sequence)


热点排行