題目描述
給定一個double類型的浮點數base和int類型的整數exponent。求base的exponent次方。
考慮的幾種情況:
1. base和0的大小
2.exponent是否爲負數
class Solution {
public:
bool isequal(double num1,double num2)
{
if(num1-num2<0.0000001&&num1-num2>-0.0000001)
return true;
else
return false;
}
//計算正指數的整數次方
double PowerWithUnsignedExponent(double base,unsigned int exponent)
{
double result=1.0;
unsigned int i;
for(i=1;i<=exponent;++i)
result*=base;
return result;
}
//利用乘方性質計算整數次方
double PowerWithUnsignedExponent2(double base,unsigned int exponent)
{
if(exponent==0) return 1;
if(exponent==1) return base;
double result=PowerWithUnsignedExponent2(base,exponent>>1);
result*=result;
if((exponent&0x1)==1)//指數爲奇數
result*=base;
return result;
}
bool g_InvalidInput=false;//使用全局變量處理錯誤
double Power(double base, int exponent) {
if(isequal(base,0.0)&&exponent<0)
{
g_InvalidInput=true;
return 0.0;
}
unsigned int absExponent=(unsigned int) (exponent);
if(exponent<0)
absExponent=(unsigned int) (-exponent);
double result=PowerWithUnsignedExponent2(base,absExponent);
if(exponent<0)
result=1.0/result;
return result;
}
};