查找递归函数的闭合表单

时间:2017-02-15 18:39:08

标签: recursion

考虑以下递归关系。

 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处终止。有人可以解释一下吗?

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 = nm = 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=2S(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,这两个关系是相同的。