日本免费全黄少妇一区二区三区-高清无码一区二区三区四区-欧美中文字幕日韩在线观看-国产福利诱惑在线网站-国产中文字幕一区在线-亚洲欧美精品日韩一区-久久国产精品国产精品国产-国产精久久久久久一区二区三区-欧美亚洲国产精品久久久久

快速冪運算步驟 2的5次方怎么計算

在m和n都屬于正數(shù),并且m的n次方不超過LONG_MAX的情況下,如何求出m的n次方呢?一般都會想到用一個循環(huán),如下
long result = 1;
for (int i = 0; i < n; i++)
result * = m;
【快速冪運算步驟 2的5次方怎么計算】result即為所求,算法復雜度O(n) 。這樣也能工作,但是當m和n變大時,效率會相當?shù)拖?,如何?yōu)化呢?考慮2的4次方的情況,其實就是4個2相乘法;有沒有看出撒問題呢?是的,重復計算!前二個2相乘的結果可以直接用,后面兩個2的相乘不用再計算,即是
2X2X2X2 = 4X4
考慮2的5次方,即5個2相乘的情況,同樣的道理
2X2X2X2X2 = 4X4X2
所呈現(xiàn)出來的規(guī)律即是
m的n次方,在n為偶數(shù)時,可以變成 m的n/2次方的平方;在n為奇數(shù)時,則有n - 1為偶數(shù),則變成m的(n-1)/2次方的平方再乘以m, 從n變成n/2,問題規(guī)模變小,中間計算結果可重復利用,可用遞歸解決,其算法復雜度變成O(logn) 。具體代碼見下:

快速冪運算步驟 2的5次方怎么計算


運行結果如下
快速冪運算步驟 2的5次方怎么計算


    推薦閱讀