題目:給定乙個double型別的浮點數base和int型別的整數exponent。求base的exponent次方
**:class solution
int powerresult(double base, unsigned int exponent)
{double result = 1.0;
for(int i = 0;i
分析:
(1)、如果不考慮全面,很容易幾句話就搞定,即乙個 for () 迴圈即可。但是,沒有考慮如果輸入的是零和負數怎麼辦?
(2)、當底數(base)為0,且指數為負數的時候,如果不做特殊處理,就會出現對 0 求倒數而導致程式錯誤。告訴程式的呼叫者出現了錯誤有三種方法:返回值、全域性**和異常。本程式中,設定了乙個全域性變數 g_invalidinput ,如果出錯,這個返回值會被設定為 true
(3)、判斷底數 base 是不是等於 0 的時候,不能直接寫 base == 0,因為計算機在表示小數時,包括 float 和 double 型別,都有誤差,不能直接用等於號判斷。判斷兩個小數是否相等,只需要判斷它們之間的差的絕對值是否在乙個很小的範圍內即可。
(4)、還有乙個更好的處理方法,能使程式的效率更高。見 p93頁
劍指offer面試題11
面試題1 數值的整數的次方 題目 實現函式double power double base,int exponent 求base的 exponent次方。不得使用庫函式,同時不需要考慮大數問題。思路 首先應該明確指數的可能取值 正整數,0,負整數 另外還需要考慮底數是0的情形。對於負整指數,我們可以...
劍指Offer 面試題11 數值的整數次方
實現double power double base,int exponent 求base的exponent次方。不得使用庫函式,同時不需要考慮大數問題。分析 源 如下 includeusing std cout using std cin using std endl class throwerr...
劍指offer 面試題11 數值的整數次方
首先,我們分析下可能出現的情況 指數可能為負值,我們先求指數的絕對值次方,然後求導。求導,那就要考慮分母不為0的情況了。bool g invalidinput false double power double base,int exponent unsigned int ab ponent uns...