展开递归递归关系

时间:2020-07-20 14:14:19

标签: algorithm recursion big-o relation recurrence

我找不到问题的解决方案,因为通常解决方案(从大OS角度来说)是要问的问题,而不是展开的重复发生。 如果已经问过,请告诉我,然后删除。

我在uni的算法和数据结构测试中遇到了这个问题,有一段时间我一直在努力。主要是因为我不知道如何得出正确的答案。

我有以下关系:

T(1)=2
T(n)=2T(n-1)+2 for n>=2 

答案是:

1. T(n)= 2^n+1 -2
2. T(n)= none of the answers are correct 
3. T(n)= 1/2n(n+1)-1 
4. T(n)= 2^n+1 -2-n
5. T(n)= n+ (-1)^n

这是我尝试过的:

T(1)=2
T(n)=2T(n-1)+2 -> T(n-1) = T(n-2)+2 
    =2T(n-2)+2+2 
    =2T(n-2)+4 -> T(n-2) = T(n-3)+3 
    =2T(n-3)+2+4 
    =2T(n-3)+6 so then -> 2T(n-k)+2k and if n=k 2T(n-n)+2n -> 2T(0)+2n 

但是我没有T(0)的情况。 另外,这种方法最终将使我了解大型O解决方案,尽管这不是我现在要查找的。

有人会友好地向我解释获得正确答案的正确方法吗?

谢谢。

4 个答案:

答案 0 :(得分:1)

不要展开答案,只需检查一下即可。

因此,对于每个可能的答案,请检查是否T(1)=2,以及是否替换给定的T(n)等于T(n)=2T(n-1)+2。因此,对于第一个答案T(1)=2^(n+1)-2=4-2=2(应该是),并且:

T(n) =?= 2*T(n)+2
2^(n+1)-2 =?= 2*(2^(n)-2)+2

使用简单的=?=表示要检查的相等性。 简化双方导致:

2^(n+1)-2 =?= 2*2^(n)-2

剩下的我留给你

答案 1 :(得分:1)

T(n)= 2T(n-1)+2等于T(n)+2 = 2(T(n-1)+2)。

因此,T(n)+2 = 2 ^(n-1)(T(1)+2)= 2 ^(n-1)* 4 = 2 ^(n + 1)。因此,T(n)= 2 ^(n + 1)-2。

答案 2 :(得分:0)

此问题与https://cs.stackexchange.com/questions/18900/how-do-i-show-tn-2tn-1-k-is-o2n

相似

您可能也了解如何解决此问题...

答案 3 :(得分:0)

简单的方法是注意到它是指数的,然后只需检查两个指数答案...

但是,如果要展开它,则会得到:

T(n) = 2 + 2T(n-1)
     = 2 + 4 + 4T(n-2)
     = 2 + 4 + 8 + 8T(n-3)
     = 2 + 4 + 8 + ... + 2^(n-1)T(1)
     = 2 + 4 + 8 + ... + 2^n

然后您就知道进度并执行:

T(n) = 2T(n) - T(n)
     = 2^(n+1) - 2
相关问题