m的n次冪的幾種解法

2021-06-06 23:18:29 字數 393 閱讀 4324

直接n次乘法,o(n)

當n為偶數時:m^n=(m^(n/2))^2;當n為奇數時:m^n=m*(m^((n-1)/2))^2;  o(logn)

將n轉化為二進位制形式:n = ak*2^k + ak-1*2^k-1 + ... + a1*2 + a0,其中ai = 0 或1 ,i = 0,1,2... k,還是見《程式設計之美》--計算斐波那契(fibonacci)數列吧,可以隨便的搜一下;o(logn);

顯然1是最慢的,但是2的實現方法將決定它的效率,如果你以(n%2)==0來判斷n為偶數,那麼2的速度與1差不多,如果你以(n&1)==0來判斷則2就會比1快。

雖然2與3有相同的時間複雜度,但是在實驗中發現3要比2快很多很多!?我還想著會有很多原因,可是仔細想了一下,只有2是需要遞迴而3不需要這乙個原因。

求x的N次冪

典型的減小時間複雜度的做法是記住程式已經做的事情,避免在做重複的事情,比如使用n 1個迴圈乘法就是一直在做重複的乘x。通過記住x,x2,x4,等資料,可以大大減小時間的複雜度。程式如下 包含標頭檔案 include include using namespace std double pow int...

計算2的n次冪

在計算2的n次冪的時候,我們可以採用pow這個函式,但是當資料太大的時候顯然int double 等這些資料型別並不能儲存下來,就會出現問題,這個時候可以採取陣列儲存的方式。1.使用pow函式。pow x,y 為計算x的y次冪。如 pow 2,3 為計算2的3次冪。2.使用陣列儲存。核心演算法是 我...

關於2的n次冪對齊

記憶體對齊時基本都會求關於n位對齊的向上取整 go1.13.8 中channel原始碼中有這樣乙個變數hchansize用來表示hchan channel對應的實際結構體 所需大小 申請記憶體空間時,是根據hchansize給hchan申請對應大小的記憶體空間 這個變數的值大概就是hchan的siz...