我一直在关注这种情况,并想检查一下我是否采取了正确的方法。
T(n) = T(n^(1/2)) + 1
= T(n^(1/4)) + 1 + 1
= T(n^(1/8)) + 1 + 1 + 1
...
= 1 + 1 + 1 + ... + 1 (a total of rad n times)
= n^(1/2)
所以答案将达到n ^(1/2)
的θ界限答案 0 :(得分:12)
以下是如何在没有任何提示的情况下找到答案,只需使用数学。
递归会在某个时刻停止,所以我们必须找到一个合理的停止点。尝试0,1,2,你可以看到2看起来不错,因为你可以很容易地解决方程:。
因此,递归将持续$line
次,这是您的时间复杂度。
P.S。有点难以复发here。
答案 1 :(得分:7)
提示:假设n = 2 2 m 或m = log 2 log 2 < / sub> n,你知道2 2 m-1 * 2 2 m-1 = 2 < sup> 2 m 所以,如果你定义S(m)= T(n)你的S将是:
S(m)= S(m-1)+1→S(m)=Θ(m)→S(m)= T(n)=Θ(log 2 log <子> 2 子> n)的
为一般情况扩展它。
在递归中,如T(n)= T(n / 2)+ 1,在每次迭代中,我们将树的高度减少到一半。这导致Θ(logn)。但是,在这种情况下,我们将输入数除以2的幂(而不是2),因此它变为Θ(log log n)。