1、题目描述
2、解题思路
采用递归的思路:
1、如果 N==0,则求的是 x 的 0 次方,返回 1;
2、如果 N != 0,先求 x 的 n/2 次方 y,如果 n 是偶数,则返回 y × y;如果 n 是奇数,则返回 y × y × x。
需要注意的点:给定的 n 不一定是正数,如果是负数,则求的是 x 的倒数的 -n 次方;
3、解题代码
class Solution {
public double myPow(double x, int n) {
long N = n;
return N >= 0 ? quickMul(x, N) : 1.0 / quickMul(x, -N);
}
public double quickMul(double x, long N) {
if (N == 0) {
return 1.0;
}
double y = quickMul(x, N / 2);
return N % 2 == 0 ? y * y : y * y * x;
}
}