class Solution {
public double myPow(double x, int n) {
if ((x - 0) == 0)
return 0;
int absOfn = n;
if (n < 0)
absOfn = -n;
double result = getPow(x, absOfn);
if (n < 0)
result = 1.0 / result;
return result;
}
private double getPow(double x, int n) {
if (n == 0)
return 1;
if (n == 1)
return x;
double result = getPow(x, n >>> 1);
result *= result;
// 一个数与2的n次方求余,可用数与运算(2^n - 1)
if ((n & 1) == 1)
result *= x;
return result;
}
// private double getPow(double x, int absOfn) {
// double result = 1.0;
// for (int i = 1; i <= absOfn; ++i)
// result *= x;
// return result;
// }
}