给定一个double类型的浮点数base和int类型的整数exponent。求base的exponent次方。保证base和exponent不同时为0
//利用快速幂求解
//快速幂:
快速幂:如计算经典的2^11;11的二进制为1011,2^3*1+2^2*0+2^1*1+2^0*1,2^(2^3*1+2^2*0+2^1*1+2^0*1)。
class Solution {
public:
double Power(double base, int exponent) {
int _exponent;
if(exponent > 0)
{
_exponent = exponent;
}
else if(exponent < 0)
{
if(base == 0)
{
return 0;
}
_exponent = -exponent;
}
else
{
return 1;
}
double ret = 1;
while(_exponent)
{
if(_exponent & 1)
{
ret *= base;
}
base *= base;
_exponent >>= 1;
}
return exponent >= 0 ? ret : (1/ret);
}
};