Implement pow(x, n).
实现一个x的n次方的功能,这个题的难度主要在于要判断很多边界,否则会发生越界问题导致error,我也是试了很多次才ac
核心的实现方法是,以2为基数,每次计算都是x的a次方乘以x的a次方,其中a是2的次方数。
public class Solution {
public double myPow(double x, int n) {
boolean neg = false;
double t = 1.0;
if(n==0)return 1.0;
if(n%2==1 && x<0)neg = true;
x = Math.abs(x);
if(n<0){
if(x!=0)x=1/x;
else return Double.MAX_VALUE;
}
if(n==Integer.MIN_VALUE){
t *= x;
n++;
}
n = Math.abs(n);
while(n>0){
if((n&1)==1){
if(t>Double.MAX_VALUE/x)return Double.MAX_VALUE;
t *= x;
}
x *= x;
n = n>>1;
}
return neg?-t:t;
}
}