劍指Offer 13 數值的整數次方

2021-10-23 00:00:38 字數 1072 閱讀 8320

題目描述:

給定乙個double型別的浮點數base和int型別的整數exponent。求base的exponent次方。

保證base和exponent不同時為0

劍指offer思路:

當指數為負數的時候,可以先對指數求絕對值,然後算出次方的結果之後再取倒數。如果底數為0,則直接返回0。此時的次方在數學上是沒有意義的。

除此之外,我們要注意:由於計算機表示小數(包括float和double型小數)都有誤差,我們不能直接用等號(==)判斷兩個小數是否相等。如果兩個小數的差的絕對值很小,比如小於0.0000001,就可以認為它們相等。

在計算次方的時候,除了簡單的遍歷,我們可以使用如下公式進行計算,來減少計算量:

class

solution

unsigned

int ab***ponent =0;

if(exponent >0)

else

double result =

powerwithunsignedexponent

(base, ab***ponent);if

(exponent <0)

return result;

}private

:bool

equal

(double num1,

double num2)

else

}double

powerwithunsignedexponent

(double base,

unsigned

int exponent)

if(exponent ==1)

double result =

powerwithunsignedexponent

(base, exponent >>1)

; result *

= result;

if(exponent &

0x1==1)

return result;}}

;

劍指offer 數值的整數次方

1 題目描述 給定乙個double型別的浮點數base和int型別的整數exponent。求base的exponent次方。2 思路 需要考慮到的情況 1 指數為負數的時候,可以先對指數求絕對值,算出次方之後的結果再取倒數。2 當底數是0,指數是負數的時候,可以將無效變數設定為true,並返回0。3...

劍指offer 數值的整數次方

給定乙個double型別的浮點數base和int型別的整數exponent。求base的exponent次方。將指數大於0,小於0,等於0 底數不為0 的情況分開。其實指數為0的情況不必單獨拎出來 不進入if直接返回result為1.0 真正需要考慮的是,底數為0而指數為負的情況,數學上沒有意義。書...

劍指offer 數值的整數次方

給定乙個double型別的浮點數base和int型別的整數exponent。求base的exponent次方。1.最直觀的方法,遞迴求解a b a a b 1 當然也可以用迴圈實現。要注意特殊情況,指數為0時乘方結果都是1 指數為負數時的計算,可以先轉化為正數再求倒數,但是底數為0時不能求導。2.效...