1. 程式人生 > >計算a^n的三種對數複雜度演算法

計算a^n的三種對數複雜度演算法

1.遞迴解決
a^n= (a ^(n/2)) ^2 ,n為偶數
a^n= (a ^((n-1)/2)) ^2*a,n為奇數
n==0時返回

2和3用n的二進位制表示來說明

2.從左向右
假設n=13,即1101
下面是求a的冪的步驟:
0->1->10->11->110->1100->1101
每次個位+1是*a,後面添0是平方。

3.從右向左(快速冪)

1101每一位表示的是a^8 a^4 a^2 a^1
位置上是1就乘上,位置是0則跳過這一位
可以設定一個temp=a,每移動一位,temp=temp*temp

第一種方法和第二種方法我比較驚奇,而第三種比較常用的我覺得很簡單,因為這就是二進位制表示嘛,很正常。