快速幂。
时间空间都为O(logN)
注意n值若是Integer.MIN_VALUE的话,取负数的话就会溢出(如java中的byte类型占8位,取值为-128~127,因为100000000表示-128)。常用一个long变量来保存。
class Solution {
public double myPow(double x, int n) {
long N = n;
return N>=0?pow(x,N):1.0/pow(x,-N);
}
public double pow(double x, long N){
if(x==1) return 1.0;
if(N==0) return 1.0;
else if(N==1) return x;
double res = pow(x,N/2);
return N%2==0?res*res:res*res*x;
}
}