读书人

编程之好2.9斐波那契数列

发布时间: 2012-07-02 17:46:23 作者: rapoo

编程之美2.9——斐波那契数列

问题:

斐波那契数列由如下递推关系式定义:F(0) = 0,F(1)=1,F(n)=F(n-1)+F(n-2) if n>1。


解法:

斐波那契数列是二阶递推数列,所以存在一个2*2的矩阵A,使得:

(Fn, Fn-1) = (Fn-1, Fn-2)*A

求得A=(1 1)

(1 0)

那么求数列的第n项就是等于求矩阵A的第n-1次幂,计算的速度非常快,时间复杂度为O(logn)。

首先我们用long long 型表示数列中的元素,它只能表示20位的整数,能表示的范围太小,最多第92个元素。


读书人网 >编程

热点推荐