數值的整數次方

題目描述

給定一個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;  
    }
};


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章