了解递归关系

时间:2012-11-17 09:37:26

标签: iteration recurrence

我有这种递归关系

T(n) = T(n-1) + n, for n ≥ 2
T(1) = 1

练习练习:使用迭代方法求解递归关系并给出渐近运行时间。

所以我这样解决了:

T(n) = T(n-1) + n 
        = T(n-2)  + (n - 1) + n 
        = T(n-3) + (n - 2) + (n - 1) + n 
        = … 
        = T(1) + 2 + … (n - 2) + (n - 1) + n **
        = 1 + 2 + … + (n - 2) + (n - 1) + n
        = O(n^2)

我有一些问题:

  

1)我如何找到渐近运行时间?

     

** 2)在这个问题状态下,T(1)意味着有n当用数字减去它给出结果1时,对吗?

     

3)如果T(0)= 1,如果T(2)= 1,怎么办?

编辑:4)为什么n ≥ 2有用?

我需要在中期测试中真正理解它

1 个答案:

答案 0 :(得分:2)

T(n) = T(n-1) + n, for n ≥ 2
T(1) = 1

如果T(x)表示运行时间:

您已经找到了渐近运行时间O(n^2)(二次方)。

如果关系更改为T(0) = 1T(2) = 1,则运行时间仍为二次方。如果添加常量或乘以常量,则渐近行为不会改变,并且更改初始条件只会向以下术语添加常量。

关系中存在

n ≥ 2,因此T(n)只针对每个正n定义一次。否则,这两行都将适用于T(1)。您无法使用T(1)T(0)计算T(n) = T(n-1) + n。即使你可以,T(1)将以两种不同的(并且可能不一致的)方式定义。