我知道递归函数的输入除以/ 2的时间复杂度是log n以2为底,我在
上遇到了一些有趣的情况https://stackoverflow.com/a/42038565/8169857
请帮助我理解有关公式推导的答案中场景背后的逻辑
答案 0 :(得分:0)
返回到递归树。为什么1/2
是O(log2(n))
?因为如果使用n = 2^k
,则应除以k
次才能达到1
。因此,计算数量最多为k = log2(n)
比较。现在假设它是(c-1)/c
。因此,如果n = (c/(c-1))^k
,我们需要进行log_{c/(c-1)}(n)
运算才能到达1
。
现在,对于任何常量c > 1
,limit log2(n)/log_{c/(c-1)}(n), n \to \infty
等于大于零的常量log_{c/(c-1)}(n) = \Theta(log2(n))
。确实,您可以针对任何常量a, b > 1
,log_a(n) = \Theta(log_b(n))
说这句话。现在,证明已完成。