<自制>
分为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