【C++】log(n)斐波那契数列计算
生活随笔
收集整理的這篇文章主要介紹了
【C++】log(n)斐波那契数列计算
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
算法
An=[[1,1],[1,0]]n=[[Fn+1,Fn],[Fn,Fn?1]]nA_n = [[1,1],[1,0]]^n = [[F_{n+1}, F_{n}],[F_{n}, F_{n-1}]] ^nAn?=[[1,1],[1,0]]n=[[Fn+1?,Fn?],[Fn?,Fn?1?]]n
將Fn的累計計算方式轉換為矩陣乘法的計算方式。
冪計算的方式由于,存在有l(wèi)ogn算法,我在 整數(shù)冪計算方式logn 中提到了,冪計算的logn算法。
注意的是: 由于矩陣乘法比對棧的壓力比整數(shù)更大,其實一般不使用的遞歸的方式來求解。
只考慮循環(huán)的方式來做。
關于越界:
- 考慮到數(shù)可能會很大,所以就用了一個mod的操作。
- 涉及到兩個數(shù)的乘法,很可能出現(xiàn)兩個沒有越界的數(shù)的乘法直接越界,因此最好用long來避免這種情況。
總結
以上是生活随笔為你收集整理的【C++】log(n)斐波那契数列计算的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: dataframe在groupby之后,
- 下一篇: shell `-c`参数 如何使用