<自制>
分爲spa
其中,特殊又分爲0、±1兩種狀況code
最終結果要分奇偶數兩種狀況遞歸
偶數就是it
x^(n/2)*x^(n/2)
奇數就是(n/2 向下取整)class
x^(n/2)*x^(n/2)*x
注意:
最後的奇偶return能夠用三元運算符代替:基礎
return (n%2==0)?res*res:res*res*x;
x的n次方,把n轉二進制:"bm…b3b2b1"二進制
n = 1xb1+2xb2+4xb3+8xb4+16xb5+……+2^(m-1)bm
因而x的n次方變爲:im
X^[1xb1+2xb2+4xb3+8xb4+16xb5+……+2^(m-1)bm] =X^[1xb1]X^[2xb2]X^[4xb3]X^[8xb4]……X^[2^(m-1)bm] =二進制位爲1纔會乘
將n存入long再*-1,就能夠避免,邊界越界的錯誤。(可是不知道爲何思想一沒有這個問題)img