AC了,但是其实不是最好的代码
class Solution {
public:
double Power(double base, int exponent) {
const double eps = 1e-6;
if( fabs(base-0.0)<eps && exponent<0 )
{
return 0.00;//特别处理
}
if( fabs(base-0.0)<eps )
{
return 0.00;
}
if( fabs(base-1.0)<eps )
{
return 1.00;
}
if( 0==exponent )
{
return 1.0;
}
int tag=0;//表示不是 -2147483648
if( exponent<0 )
{
exponent=-1*exponent;
base=1.0/base;
}
//快速幂的典型的“非递归”写法,要是base是int,显然base*=base还能用位运算优化
double rt=1;
while( exponent )
{
if( exponent &1 )
{
rt*=base;
}
base*=base;
exponent >>= 1;
}
return rt;
}
};