[英]Run time and space complexity for Power function using recursion
public static long pow_2(long x, int n) {
if (n == 0)
return 1;
if (n == 1)
return x;
if (n % 2 == 0) {
return pow_2( x, n / 2 ) * pow_2( x, n / 2 );
}
else {
return pow_2(x * x, n / 2) * x;
}
}
空間復雜度不是OLog(n)嗎,因為您每次調用n / 2次調用堆棧主框架?
時間復雜度不是O(2 ^ n),因為我們每次都會從函數中進行兩次調用嗎?
我正在使用Java。
時間復雜度不是2 ^ n,因為兩個遞歸調用的結束速度比線性時間快得多。 對於n是2的冪的情況(這是最壞的情況),您的遞歸公式遵循T(n)= 2 * T(n / 2)。 通過主定理: http : //www.cse.unt.edu/~tarau/teaching/cf1/Master%20theorem.pdf,您可以得出c = 0 <log_b a為1。因此,函數的復雜度為O (N)。 這類似於有序遍歷。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.