// 思路 需要注意的点 n是正还是负
// n 是正的时候 直接递归 每次n/2 如果n%2 == 0 那就直接把结果平方 如果不为0 就再*x
// 出口是 n==0 时 为1;
// n为负数时 把n = -n 结果去倒数就行了;
class Solution {
public double myPow(double x, int n) {
if(n == 0) {
return 1;
}
if(n < 0) {
return 1 / pow(x, -n);
}
return pow(x, n);
}
private double pow(double x, int n) {
if(n == 0 )return 1;
double half = pow(x, n / 2);
if(n % 2 == 0) {
return half * half;
} else {
return half * half * x;
}
}
}