class Solution {
public double myPow(double x, int n) {
boolean tag = false;
double result = 1;
if (n == 0){
return 1d;
}
if (n < 0){
tag = true;
n = -n;
}
for (int i = n; i != 0; i /= 2) {
if (i % 2 != 0){
result *= x;
}
x *= x;
}
if (tag){
return 1/result;
}else {
return result;
}
}
}
因为n可能特别大,所以采用折半计算:
如果n为奇数,result需要乘上一次计算得到的x值,否则x累乘。