求乙個數的整數次方

2021-07-14 00:13:10 字數 988 閱讀 9019

題目:求乙個數的整數次方。

題目是如此的簡單,但是需要考慮的還是比較多:

1.指數為負,底數是零;

2.指數底數都是零;

3.返回正常零和返回錯誤零的區別;

4.底數為正,指數為負如何處理;

5.考慮底數次方大的話,想效率問題;

6.處理double數值相等問題;

以下直接是**,詳細考慮除底數指數全零的以上所有情況!

#pragma once

/**base是底數 exponent是指數

*/bool g_input = false; //錯誤時,返回零,和正常返回零區別

double power(double base, int exponent)

unsigned int ab***ponent = (unsigned int)(exponent);

if (exponent < 0) //如果指數為負,先換成正的處理

ab***ponent = (unsigned int)(-exponent);

double result = powerwithunsingnedexponent(base, ab***ponent); //最終結果

if (exponent < 0) //如果指數為負,結果就是正數的倒數

result = 1.0 / result;

return result;

}//將乙個數的次方拆分,2為拆分單元 提高效率

double powerwithunsingnedexponent(double base, unsigned int exponent)

//兩個double數是否相等,不能用絕對的相等來寫,兩個double數滿足如下,就判相等

bool equal(double num1, double num2)

void test()

賜教!

求某個數的整數次方

題目 實現函式double power double base,int exponent 求base的exponent次方。不需要考慮溢位。這裡直接求解的 應該不難寫,這裡先考慮比較簡單的情況,即base非0,exponent大於0。當然,有更好的解法,不然就不寫這blog了。更好的解法是基於下面的...

求乙個數的臨近的較大的2的整數次冪

被面試官問了這麼一道題.一問,想到,左移就好了。就會很自然的寫下這種方法 unsigned int f2 unsigned int val return retval 在改進一下,就判斷他是不是2的次方先。如果是的話,可以直接返回。就可以得到這種方法。面試官又說,不能用迴圈遞迴,函式庫。這下麻煩了。...

位運算的應用 判斷乙個數是不是2的整數次方

題目描述 判斷乙個數是不是2的整數次方,只能用一條語句。這個題其實不用位運算的方法也可以,用log2取整也可以。下面給出位運算的做法。2的二進位制為10 4的二進位制為100 8的二進位制為1000 2 n的二進位制為1000 0000 發現2的整數次方的二進位制中均只有乙個1.include us...