12 陣列的整數次方

2021-09-28 14:35:37 字數 1770 閱讀 8069

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

保證base和exponent不同時為0

當指數exponent為正

當指數為負,可以先對指數取絕對值,算出次方的結果後取倒數,要討論底數是否為0

底數base不為0

底數base為0,對0求倒數,導致程式出錯,需要進行特殊處理,這裡採用全域性變數

[外鏈轉存失敗,源站可能有防盜煉機制,建議將儲存下來直接上傳(img-ylzecmxv-1576820392924)(/home/xiaohu/.config/typora/typora-user-images/1572402654504.png)]

c++

法1:

class solution 

unsigned int ab***ponent;

if(exponent<0)

ab***ponent=-exponent;

else

ab***ponent=exponent;

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

if(exponent<0)

result=1.0/result;

return result;

}double powerwithunsignedexponent(double base,unsigned int exponent)

};

法2:

位運算效率比乘除法及求餘運算子(%)的效率高很多

class solution 

unsigned int ab***ponent;

if(exponent<0)

ab***ponent=-exponent;

else

ab***ponent=exponent;

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

if(exponent<0)

result=1.0/result;

return result;

}double powerwithunsignedexponent(double base,unsigned int exponent)

};

python

class

solution

:def

power

(self, base, exponent)

:# write code here

if exponent==0:

return

1 flag=

1if exponent<0:

exponent=

-exponent

flag=

0

temp=base

res=

1while

(exponent)

:if exponent &1:

res*=temp

temp*=temp

exponent=exponent>>

1if flag:

return res

else

:return

1.0/res

12 整數的整數次方

給定乙個double型別的浮點數base和int型別的整數exponent。求base的exponent次方。保證base和exponent不同時為0 快速求冪演算法 如 x 2 x x x 4 x 2 x 2 x 8 x 4 x 4 x 16 x 8 x 8 x 31 x 16 x 8 x 4 x...

12 數值的整數次方

題目 給定乙個double型別的浮點數base和int型別的整數exponent。求base的exponent次方。思路 很自然的會想到用迭代。但是也可以用二分法來解決問題,時間複雜度為o logn 個人覺得,這個題目最難的是有很多邊界問題需要考慮。public class solution els...

12 數值的整數次方

數值的整數次方 給定乙個double型別的浮點數base和乙個int型別的整數exponent。求base的exponent次方 思路 全面考察底數是否為0,以及指數的正負等邊界情況 求a的n次方 一種效率高的求法 當n為偶數時,a n a n 2 a n 2 當n為基數時,a n a n 1 2 ...