二分法,注意n = 1和0的特殊情况
public class Solution {
//Time: O(logn)
public double pow(double x, int n) {
if (n == 0) {
return 1;
}
if (n == 1) {
return x;
}
boolean isNeg = false;
if (n < 0) {
n = -n;
isNeg = true;
}
double half = pow(x, n / 2);
if (n % 2 == 0) {
return isNeg ? 1 / (half * half) : half * half;
} else {
return isNeg ? 1 / (half * half * x) : half * half * x;
}
}
}
No comments:
Post a Comment