面試11 數值的整數次方

2021-07-22 15:25:42 字數 907 閱讀 2887

1)殘缺解法:

double power(double base,int exponent)

沒有考慮輸入指數小於1(0或負數)

2)底數是零且指數是負數的時候,會對0求倒數導致程式出錯

0的0次方是沒有意義的

bool g_invalidinput=false;

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;

}double powerwithunsignedexponent(double base,unsigned int exponent)

bool equal(double num1,double num2)

注意:判斷底數base是不是等於0時,計算機內表示小數的時候都有誤差(包括float和double),不能直接寫base==0

3)

double powerwithunsignedexponent(double base,unsigned int exponent)

注意:右移運算子代替除以2,位運算子代替求餘運算子效率高

11 數值的整數次方

要注意的幾個地方 1.如何判斷兩個double型別的資料是否相等。2.需要進行power有效性的判斷,0的負指數次方沒有意義。3.在進行power運算的時候要考慮效率。includeusing namespace std bool isvalid true bool ispositive true ...

11 數值的整數次方

題意 給定乙個double型別的浮點數base和int型別的整數exponent。求base的exponent次方。public class solution if exponent 0 return 1 res else return res 有一點很重要 整數包括正數 負數和零!還有一點 指數函...

11 數值的整數次方

題目描述 給定乙個 double 型別的浮點數 base 和 int 型別的整數 exponent。求base 的 exponent 次方。不得使用庫函式,不需要考慮大數問題 思路 不能用 比較兩個浮點數是否相等,因為有誤差。考慮輸入值的多種情況。實現 public double power dou...