面試題16 數值的整數次方

2021-10-01 22:43:14 字數 1420 閱讀 4739

時間複雜度為o(n)的演算法

#include

#include

using

namespace std;

bool

equal

(double d1,

double d2)

double

power

(double base,

int exponent)if(

equal

(base,

0.0)

)unsigned

int abs_exp =0;

if(exponent >0)

else

double ret =1;

for(

unsigned

int i =

0; i < abs_exp; i++)if

(exponent <0)

return ret;

}int

main()

時間複雜度為o(logn)的演算法

#include

#include

using

namespace std;

bool

equal

(double d1,

double d2)

double

powerwithab***p

(double base,

unsigned

int abs_exp)

if(abs_exp ==1)

double ret =

powerwithab***p

(base, abs_exp >>1)

; ret *

= ret;

if(abs_exp &

0x1==1)

return ret;

}double

power

(double base,

int exponent)if(

equal

(base,

0.0)

)unsigned

int abs_exp =0;

if(exponent >0)

else

double ret =

powerwithab***p

(base, abs_exp);if

(exponent <0)

return ret;

}int

main()

注意的地方

1、double判斷為零的時候不能直接用==,因為double可能是不精確的。

2、程式中的小bug:0不能做分母,即base=0,exponent<0的情況是異常情況。

面試題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 數值的整數次方

一 題目 實現函式double power double base,int exponent 求base的exponent次方。不得使用庫函式,同時不需要考慮大數問題。二 關鍵 1.考慮齊全。指數是負數。底數為零且指數是負數的時候。底數是0.2.速度提高。三 解釋 1.求整數次方時,考慮如下的數學公...