0
第一個運行時間是O(log n),我知道這是大多數遞歸情況下的運行時間。類似的遞歸情況,不同的運行時間?
int happy (int n, int m) {
if (n < 10) return n;
else if (n < 100)
return happy (n - 2, m);
else
return happy (n/2, m);
}
然而,第二遞歸的情況下的運行時間爲O(n)
int silly(int n, int m) {
if (n < 1) return m;
else if (n < 10)
return silly(n/2, m);
else
return silly(n - 2, m);
}
任何人都可以解釋,爲什麼?我真的很感激!
謝謝您的回答。你有什麼策略來計算運行時間嗎? – user2913922
這不是一個簡單的主題。我們的目標是試着弄清楚,給定'n'輸入或者輸入大小'n',算法執行多少有意義/重要_操作_(模糊定義)以完成。在這兩個函數的情況下,我計算了函數調用自己的次數,直到達到基本大小寫。 – mojo