1.方法1
根据题意只需要按常规的循环处理就行了。
具体代码如下:
class Solution {
public:
double Power(double base, int exponent) {
int n = abs(exponent); //取绝对值可以简化代码,等输出时再判断是否取倒数返回
double ans = 1.;
while(n--){
ans *= base;
}
return exponent > 0 ? ans : 1. / ans;
}
};
2.方法2
方法1虽然简洁,不过其效率或许还是稍低一些。方法2则根据二分法大幅提升了计算乘法的效率。
具体代码如下:
class Solution {
public:
double Power(double base, int exponent) {
int n = abs(exponent); //取绝对值可以简化代码,等输出时再判断是否取倒数返回
if(exponent == 0) return 1;
if(exponent == 1) return base;
double ans = Power(base, n >> 1);
ans *= ans;
if(exponent & 1) ans *= base;
return exponent > 0 ? ans : 1. / ans;
}
};