
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;
}
};
博客介绍了两种计算乘法的方法。方法1采用常规循环处理,代码简洁;方法2运用二分法,大幅提升了计算效率,文中还给出了具体代码。
1939

被折叠的 条评论
为什么被折叠?



