我有这种递归关系
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
有用?
我需要在中期测试中真正理解它
答案 0 :(得分:2)
T(n) = T(n-1) + n, for n ≥ 2
T(1) = 1
如果T(x)
表示运行时间:
您已经找到了渐近运行时间O(n^2)
(二次方)。
如果关系更改为T(0) = 1
或T(2) = 1
,则运行时间仍为二次方。如果添加常量或乘以常量,则渐近行为不会改变,并且更改初始条件只会向以下术语添加常量。
n ≥ 2
,因此T(n)
只针对每个正n
定义一次。否则,这两行都将适用于T(1)
。您无法使用T(1)
从T(0)
计算T(n) = T(n-1) + n
。即使你可以,T(1)
将以两种不同的(并且可能不一致的)方式定义。