我认为会是这样的......
T(n) = 2T(n-1) + O(n)
= 2(2T(n-2)+(n-1)) + (n)
= 2(2(2T(n-3)+(n-2))+(n-1))+(n)
= 8T(n-3) + 4(n-2) + 2(n-1) + n
这最终类似于2 i *(n-i)的总和,而我的书说最终为O(2 n )。有人可以向我解释一下吗?我不明白为什么它是2 n 而不仅仅是O(n),因为(n-i)将继续n次。
答案 0 :(得分:1)
Math Stack Exchange已经解决了这种复发问题。当我解决这个问题时,我得到:
T(n) = n + 2(T(n-1))
= n + 2(n - 1 + 2T(n-2)) = 3n - 2 + 2^2(T(n-2))
= 3n - 2 + 4(n - 2 + 2(T(n-3))) = 7n - 10 + 2^3(T(n-3))
= 7n - 10 + 8(n - 3 + 2(T(n-4))) = 15n - 34 + 2^4(T(n-4))
= (2^4 - 1)n - 34 + 2^4(T(n-4))
......等等。
有效地再次发生归结为:
T(n)=(2 n + 1 )* T(1) - n - 2
请参阅Math Stack Exchange链接,了解我们如何实现此解决方案。将T(1)保持为常数,上述复发的主导因素是(2 (n + 1))。
因此,给定复发的增长率 O(2 n )。