题目链接
题目描述
给定一个 double 类型的浮点数 base 和 int 类型的整数 exponent,求 base 的 exponent 次方
解题思路
非递归
class Solution {
public double myPow(double x, int n) {
long N = n; // 防止n在int最小值转正时溢出
if (N<0) {
x = 1/x;
N = -N;
}
double res = 1;
while (N!=0) {
if (N%2 == 1)
res *= x;
x*=x;
N=N>>1;
}
return res;
}
}
递归
class Solution {
public double myPow(double x, int n) {
long N = n;
if (N<0) return 1/myPow(x, -N);
return myPow(x, N);
}
private double myPow(double x, long N) {
if (N==0) return 1;
if (N==1) return x;
if (N%2 == 0) {
return myPow(x*x, N/2);
}
else {
return x*myPow(x*x, N/2);
}
}
}