考虑以下递归关系。
T(n) = 5 if n <= 2
T(n-1) + n otherwise
T(n)
的封闭式解决方案
我为所有值获得了n(n+1)/2 + 7
的解决方案。但在我的大学考试中,他们给出了解决方案n(n+1)/2 + 2
。但是,对于值5
,此解决方案不会在n<2
处终止。有人可以解释一下吗?
答案 0 :(得分:1)
让我们解决它;首先让我们在伸缩总和中扩展:
T(k) = T(k)
T(k + 1) = T(k) + k + 1
T(k + 2) = T(k + 1) + k + 2 = T(k) + k + 1 + k + 2
...
T(k + m) = T(k) + k + 1 + k + 2 + ... + k + m =
= T(k) + mk + 1 + 2 + ... + m =
= T(k) + mk + (1 + m) * m / 2
...
现在我们有了
T(k + m) = T(k) + mk + (1 + m) * m / 2
让k = 2
:
T(m + 2) = T(2) + 2m + (1 + m) * m / 2 = 5 + 2m + (1 + m) * m / 2
最后,让m + 2 = n
或m = n - 2
:
T(n) = 5 + 2 * (n - 2) + (n - 1) * (n - 2) / 2 = n * (n + 1) / 2 + 2
我们有
T(n) = n * (n + 1) / 2 + 2 when n > 2
T(n) = 5 when n <= 2
答案 1 :(得分:0)
作为一项简单的非严格推理练习,我们知道T(n) = T(n-1) + n
会产生第一个n
数字的总和:S(n) = n * (n + 1) / 2
现在,当n=2
,S(2) = 3
时,5
的值实际上是5 - S(2) = 2
的增量。所以我们可以说:
T(n) = S(n) + (5 - S(2)) for n >=2
或
T(n) = S(n) + 2 for n >= 2
T(n) = 5 for n <= 2
请注意,在n=2
,这两个关系是相同的。