(
1
1
1
0
)
=
(
F
n
F
n
−
1
F
n
F
n
−
1
F
n
−
2
F
n
−
1
)
(\begin{matrix}F_n&F_{n-1}\F_{n-1}&F_{n-2}\end{matrix}) * (\begin{matrix}1&1\1&0\end{matrix}) = (\begin{matrix}F_n + F{n-1}&F_n\F_{n-1} + F_{n-2}&F_{n-1}\end{matrix})
(FnFn−1Fn−1Fn−2)∗(1110)=(Fn+Fn−1Fn−1+Fn−2FnFn−1)
根据斐波那契迭代的公式可以推得
- F
n
F
n
−
1
=
F
n
1
F_n + F_{n-1} = F_{n + 1}
Fn+Fn−1=Fn+1
- F
n
=
F
n
F_n = F_n
Fn=Fn
- F
n
−
1
F
n
−
2
=
F
n
F_{n-1} + F_{n - 2} = F_n
Fn−1+Fn−2=Fn
- F
n
−
1
=
F
n
−
1
F_{n-1} = F_{n-1}
Fn−1=Fn−1
由此可以得出结论。
A
n
∗
(
1
1
1
0
)
=
(
A
n
1
)
A_n * (\begin{matrix}1&1\1&0\end{matrix}) = (A_{n+1})
An∗(1110)=(An+1)
只需要记录第n-1项,第n-2项,第n项,就可以使用乘法的方法来计算出第n+1项。
根据上式得到最终递推式如下:
A
n
=
(
1
1
1
0
)
n
−
1
A_n = {(\begin{matrix}1&1\1&0\end{matrix})}^{n-1}
An=(1110)n−1
到了这一步,直接使用矩阵乘法来计算的话,最终的时间复杂度为O(n)。但是乘法的话存在快速幂运算的计算方法,使用快速幂运算,可以将运算的时间复杂度进一步降低。
快速幂运算逻辑如下:
计算a的n次方,如果a是偶数,那就直接计算
a
最后的话
最近很多小伙伴找我要Linux学习资料,于是我翻箱倒柜,整理了一些优质资源,涵盖视频、电子书、PPT等共享给大家!
资料预览
给大家整理的视频资料:
给大家整理的电子书资料:
如果本文对你有帮助,欢迎点赞、收藏、转发给朋友,让我有持续创作的动力!
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
g)
计算a的n次方,如果a是偶数,那就直接计算
a
最后的话
最近很多小伙伴找我要Linux学习资料,于是我翻箱倒柜,整理了一些优质资源,涵盖视频、电子书、PPT等共享给大家!
资料预览
给大家整理的视频资料:
[外链图片转存中…(img-CRZdk3Zn-1714251836130)]
给大家整理的电子书资料:
[外链图片转存中…(img-tgsxMTDu-1714251836130)]
如果本文对你有帮助,欢迎点赞、收藏、转发给朋友,让我有持续创作的动力!
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!