面試題16 數值的整數次方

2021-08-29 02:19:25 字數 1237 閱讀 1738

一、題目

實現函式double power(double base, int exponent),求base的exponent次方。不得使用庫函式,同時不需要考慮大數問題。

二、關鍵

1.考慮齊全。指數是負數。底數為零且指數是負數的時候。底數是0.

2.速度提高。

三、解釋

1.求整數次方時,考慮如下的數學公式:

2.使用右移運算子代替除以2操作。提高運算速率。

3.使用位運算子代替了求餘運算子(%),來判斷乙個數是奇數還是偶數。提高運算速率。

四、**

#include #include bool g_invalidinput = false;

bool equal(double num1, double num2);

double powerwithunsignedexponent(double base, unsigned int exponent);

double power(double base, int exponent)

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

if (exponent < 0)

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

double result = powerwithunsignedexponent(base, ab***ponent);

if (exponent < 0)

result = 1.0 / result;

return result;}/*

double powerwithunsignedexponent(double base, unsigned int exponent)

*/double powerwithunsignedexponent(double base, unsigned int exponent)

bool equal(double num1, double num2)

// ********************測試**********************

void test(const char* testname, double base, int exponent, double expectedresult, bool expectedflag)

int main(int argc, char* argv)

面試題16 數值的整數次方

實現函式double power double base,int exponent 求base的exponent次方。不得使用庫函式,同時不需要考慮大數問題。分析 由於不需要考慮大數問題,這道題看起來很簡單。但是需要特別注意的是 如果輸入的指數小於1 0和負數 的時候怎麼辦?當底數是0且指數是負數的...

面試題16 數值的整數次方

題目描述 給定乙個double型別的浮點數base和int型別的整數exponent。求base的exponent次方。注意幾種特殊的輸入情況,base為0,以及exponent正負時求指數的差異。方法一 class solution else 改進版 class solution unsigned...

面試題16 數值的整數次方

面試題16 數值的整數次方 題目 實現函式double power double base,int exponent 求base的exponent 次方。不得使用庫函式,同時不需要考慮大數問題。思路 考慮到base 0,exponent 0時,無意義。exponent 0時,結果取倒數。還有比較兩個...