在應用中求冪是乙個經常使用到的運算。
那麼我們求冪的時候是不是經常這樣寫
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,所...