数值的整数次方(数字、运算)。
题目:实现函数double Power(double base, int exponent),求base的exponent次方。
不需要考虑溢出。
注意边界
bool Invalid = false;
double Power(double base, int exponent)
{
if(equal_double(base,0.0) && exponent<0)
{
Invalid = true;
return 0.0;
}
double result = 0;
if(exponent>0)
result = PowerWithUnsignExp(base,exponent);
else
result = 1.0/PowerWithUnsignExp(base,-exponent);
return result;
}
bool equal_double(double num1,double num2)
{
if(num1-num2>-0.000001 && num1-num2<0.000001)
return true;
else
return false;
}
double PowerWithUnsignExp(double base,unsigned exponent)
{
double answer = 0.0;
if(exponent==0)
return 1.0;
if(exponent==1)
return base;
answer = PowerWithUnsignExp(base,exponent>>2);
answer *= answer;
if(exponent & 0x1 == 1)
answer *= base;
return answer;
}