使用二分法求整數冪

2021-07-02 06:35:52 字數 676 閱讀 7798

在應用中求冪是乙個經常使用到的運算。

那麼我們求冪的時候是不是經常這樣寫

int power(int x,  int n)

這樣寫簡單直觀,但是時間複雜度太高了

為了減少時間的消耗,我們可以使用二分法。

舉個例子:求2的8次冪。

設結果為result

result = 2^8,那麼

設result1 = 2^4,很容易推出 result = result1*result1

設result2 = 2^2,同理,result1 = result2*result2

……再舉個例子,result3 = 2^7

那麼 result3 = result1 * 2^3

2^3 = 2^2 *2^1

那麼規律出來了,我們可以寫程式了

這裡用了一些不常用的c的知識,有可能比較晦澀難懂。

穩妥起見,這裡再複習一下c的知識

好了,可以給出程式了:

int power(int x, int n)

return result;

}

參考內容:

stl系列之七 快速計算x的n次冪 power()的實現 –morewindows

原文:

C 二分法查詢,遞迴二分法

用二分法來求需要查詢的值.includeusing namespace std 查詢key元素是否存在 int findkey const int buf 100 const int ilen,const int key else right left mid 1 查詢失敗 return 1 查詢k...

python二分法查詢 Python 二分法查詢

二分法查詢主要的作用就是查詢元素 lst 1,3,5,7,12,36,68,79 資料集 百萬級資料 num int input 請輸入你要查詢的元素資訊 for el in lst if num el print 存在 break else print 不存在 len lst 0 1 2 3 4 ...

求方程根 (二分法)

二分法求方程的根 求下面方程的乙個根 f x x3 5x2 10x 80 0 若求出的根是a,則要求 f a 10 6 解法 對f x 求導,得f x 3x2 10x 10。由一元二次方程求根公式知方呈f x 0 無解,因此f x 恆大於0。故f x 是單調遞增的。易知f 0 0且f 100 0,所...