如何求解递归A(n) = A(n-1) + n*log(n)?

How to solve the recurrence A(n) = A(n-1) + n*log(n)?

鉴于重复:
A(n) = A(n-1) + n*log(n).
如何找到 A(n) 的时间复杂度?

A(n) = A(n-1) + nlog(n)

看,你的递归说:取之前的值并向其添加 nlogn

所以...假设 A(1) = log(1) 是序列的第一个元素:A(n) = SUM from i = 1 to n (ilog(i)).

为什么?

A(1) = log(1).
A(2) = log(1) + 2log(2).
A(3) = A(2) + 3log(3) = 1log(1) + 2log(2) + 3log(3).
.
.
.
A(n) = 1log(1) + 2log(2) + 3log(3) + ... + nlog(n)

F(n) - F(n-1)是非递归函数时,总是可以使用这种解决递归的方法。在我们的例子中它是 nlogn 所以它起作用了。

F(n)/F(n-1) 是非递归函数时,可以使用类似的规则。然后我们用PI代替SIGMA。

如果我被要求给它一个上限,我会建议尝试以下操作:

  log(n)   + log(n)   + log(n)   + log(n)   + ...
+            log(n-1) + log(n-1) + log(n-1) + ...
+                       log(n-2) + log(n-2) + ...
.
.
.

所以

现在你的上界已经很明确了,所以 is there for free (O(nlog(n!))). In case you're looking for a 你还需要再挣扎一下。

  1. 令A(0)=c。求 A(n) 作为 n 和 c 的函数,由总和定义。
  2. 总和有多少项?
  3. 总和的最小值是多少?尝试找到一个估计值。
  4. 总和的最大值是多少?尝试找到一个估计值。
  5. 如果你能估计 (3) 和 (4) 使得其中一个比另一个大常数倍,你完成了吗?为什么?