數值的整數次方

2021-09-11 04:23:08 字數 1319 閱讀 5232

給定乙個double型別的浮點數base和int型別的整數exponent。求base的exponent次方。

考慮正數、0 和負數的情況

對**部分的if語句使用switch case替換

**如下:

ublic class solution  catch (exception e) 

} // exponent的三種情況

if (exponent == 0) else if (exponent < 0) else if (exponent > 0)

return result;

} // 指數為正數的情況

public double powerwithexponent(double base, int exponent)

break;

}return val;

} //數值比較的方法

public boolean equal(double num1,double num2)else}}

其中,

1)使用 數值比較的方法而不是直接使用「base==0.0」,是因為浮點數不能直接用 == 來比較(意會:浮點數沒有絕對的相等),需要用差值的絕對值和0來進行比較

this.equal(base,0.0)  呼叫下面的equal方法

//數值比較的方法

public boolean equal(double num1,double num2)else

}

2)

優化上面的for迴圈乘方**powerwithexponent()方法

我們可以直接借助於乘方的數學公式進行求解。

a^n = a^(n/2) * a^(n/2);n為偶數;

a^n = a^[(n-1)/2] * a^[(n-1)/2] * a;n為奇數;

這是乙個典型的遞迴問題。故乘方的實現**如下:

// 指數為正數的情況

public double powerwithexponent(double base, int exponent)

break;

}return val;

}

3)用位與運算子代替了求餘運算子(%)來判斷乙個數是奇數還是偶數,如果是奇數還需要再乘乙個base 可參考:

大部分內容來自:

數值整數次方

題目 實現函式double power double base,int exponent 求base的exponent次方。不得使用庫函式,同時不需要考慮 大數問題。includebool equal double num1,double num2 double powerwithunsignede...

數值整數次方

題目 實現函式double power double base,int exponent 求base的exponent次方。不得使用庫函式,同時不需要考慮 大數問題。includebool equal double num1,double num2 double powerwithunsignede...

數值的整數次方

題目 實現函式double power double base,int exponent 求base的exponent次方。不得使用庫函式,同時不需要考慮大樹問題。這道題目有以下幾點需要注意 0的0次方是無意義的,非法輸入 0的負數次方相當於0作為除數,也是無意義的,非法輸入 base如果非0,如果...