迭代法
class Solution {
public:
double Power(double base, int exponent) {
double res = 1;
int n = abs(exponent);
while(n > 0) {
if (n & 1) res *= base;
base *= base;
n >>=1;
}
if (exponent < 0 ) res = 1 / res;
return res;
}
};
递归法(有问题!)
class Solution {
public:
double Power(double base, int exponent) {
int n = abs(exponent);
double res = binaryPow(base, n);
if (exponent < 0) res = 1 / res;
return res;
}
double binaryPow(double a, int b){
if (b == 0) return 1;
if (b % 2 == 1) return a * binaryPow(a, b - 1);
else {
double mul = binaryPow(a, b / 2);
return mul * mul;
}
}
};