给定一个double类型的浮点数base和int类型的整数exponent。求base的exponent次方。
class Solution {
public:
bool equal(double a,double b){
if(fabs(a-b) < 0.00001) return true;
return false;
}
double quilckPower(double base,unsigned int exponent)
{
if(exponent == 0)return 1;
if(exponent == 1)return base;
if(exponent&1) return base*quilckPower(base*base,exponent>>1);
return quilckPower(base*base,exponent>>1);
}
double Power(double base, int exponent) {
if(equal(base,0) && exponent <= 0) return 0; //鲁棒性: 求0的非正数次方无意义.
if(equal(base,0)) return 0; //优化: 0为底数结果可以直接为0。
if(exponent == 0) return 1;
else if(exponent > 0)
return quilckPower(base,exponent);
else
return 1.0/quilckPower(base,abs(exponent));
}
};