文章目录
1、题目描述2、解题思路3、解题代码
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
;
}
}