如果我有兩個整數m
和n
,我不得不計算power(m,n)
即米ñ,然後我寫了下面的遞歸代碼,這給時間複雜度爲O(log n)的,但我無法編寫它的迭代版本,它給出了類似的時間複雜度。如何編寫時間複雜度爲O(log n)的計算m^n的迭代版本?
int power(int m, int n) {
int p;
if (n == 1)
return m;
p = power(m, n/2);
if (n % 2 == 1)
return p * p * m;
else
return p * p;
}
https://en.wikipedia.org/wiki/Exponentiation_by_squaring –
有一些限制,防止您使用的庫函數[POW]( http://www.cplusplus.com/reference/cmath/pow/)? –
不,但我想試試遞歸定義 – user123