Jay*_*Jay 4 recursion complexity-theory big-o recurrence
我们要通过重复替换来解决递归关系:
T(n)=T(n-1)+logn
Run Code Online (Sandbox Code Playgroud)
我开始替换并得到以下内容.
T(n)=T(n-2)+log(n)+log(n-1)
Run Code Online (Sandbox Code Playgroud)
按对数乘积规则,log(mn)= logm + logn,
T(n)=T(n-2)+log[n*(n-1)]
Run Code Online (Sandbox Code Playgroud)
继续这个,我明白了
T(n)=T(n-k)+log[n*(n-1)*...*(n-k)]
Run Code Online (Sandbox Code Playgroud)
我们知道基本情况是T(1),所以n-1 = k - > k = n + 1,并在我们得到的中取代
T(n)=T(1)+log[n*(n-1)*...*1]
Run Code Online (Sandbox Code Playgroud)
显然n*(n-1)*...*1 = n!所以,
T(n)=T(1)+log(n!)
Run Code Online (Sandbox Code Playgroud)
我不知道如何解决这一点.答案只是O(log(n!))?我已经读过其他解释说它是Θ(nlogn),因此它遵循O(nlogn)和Ω(nlogn)分别是上限和下限.
不需要斯特林的公式来获得大-Theta的约束.它是O(n log n),因为它是最多n个项的总和,每个项最多为log n.它是Omega(n log n),因为它是至少n/2项的总和,每个项至少log(n/2)= log n - 1.