簡體   English   中英

使用遞歸的Power函數的運行時和空間復雜度

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM