给定一个double类型的浮点数base和int类型的整数exponent。求base的exponent次方。
超时代码
class Solution {
public:
double Power(double base, int exponent){
if (exponent == 0)return base;
double k = 1;
while (exponent--){
k *= base;
}
return k;
}//没有考虑到指数可能是负数
};
- AC的代码
class Solution {
public:
double UnsignedPower(double base, unsigned int exponent){
if (exponent == 0)return 1.0;
if (exponent == 1)return base;
double result = UnsignedPower(base, exponent >> 1);
result *= result;
if (exponent & 1)
result *= base;
return result;
}
double Power(double base, int exponent) {
int flag = 1;
if (base-0.0>-0.0000001 && base-0.0<0.0000001)return 0.0;
if (exponent < 0){
flag = 0;
exponent =(-exponent);
}
double result = UnsignedPower(base, exponent);
if (flag == 0)result = 1.0 / result;
return result;
}//注意考虑到指数为负数,以及位运算的运用可以提高效率
};