虽然AC了-但是其实这种写法还有不严谨之处,int负数最大的时候
数值的整数次方
http://www.nowcoder.com/questionTerminal/1a834e5e3e1a4b7ba251417554e07c00
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; } };