Divide and Conque 。 二分法。 recursion巧妙的重复处理子问题。
这是这个题最好的版本。
这个题如果返回值不在 n==0 处返回 1, 会多出来很多判断情况。
背过这个方法,毕竟典型题目。
public class Solution {
public double myPow(double x, int n) {
if (n < 0) {
return 1 / power(x, -n);
} else {
return power(x, n);
}
}
public double power(double x, int n) {
if (n == 0)
return 1;
double v = power(x, n / 2);
if (n % 2 == 0) {
return v * v;
} else {
return v * v * x;
}
}
}