将问题划分为互不相交的子问题,递归地求解子问题,再将它们的解组合起来,求出原问题的解。
50 Pow(x, n) Medium
Implement pow(x, n).
Example 1: Input: 2.00000, 10 Output: 1024.00000
Example 2: Input: 2.10000, 3 Output: 9.26100
思路:二分法 x^n=x^{n/2} × x^{n/2} × x^{n (mod) 2}
class Solution {
public double myPow(double x, int n) {
// 判断指数正负
if (n < 0) {
return 1 / power(x, -n);
} else {
return power(x, n);
}
}
private 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;
}
}
}