斐波拉契数列求解 (矩阵二分快速幂)

斐波拉契数列定义

斐波那契数列指的是这样一个数列 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233,377,610,987,1597,2584,4181,6765,10946,17711,28657,46368…
这个数列从第3项开始,每一项都等于前两项之和。

通常我们会利用公式 **F(n)=F(n-1)+F(n-2)(n>2)**递推求解斐波拉契数列的第n个数。

求解斐波拉契数列的第n项

解法一

利用用上面的公式一步一步递推求解,就不过多赘述,时间复杂度是O(n),若n过大,就会时间超限。

解法二

知识点是矩阵二分快速幂
斐波拉契数列求解 (矩阵二分快速幂)
这样问题的核心就等于求解矩阵A的 i -2次方,矩阵快速幂的时间复杂度是O(lg n),所以斐波拉契数列的时间复杂度也是O(lg n)