Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Algorithm 展开递归递归关系_Algorithm_Recursion_Big O_Relation_Recurrence - Fatal编程技术网

Algorithm 展开递归递归关系

Algorithm 展开递归递归关系,algorithm,recursion,big-o,relation,recurrence,Algorithm,Recursion,Big O,Relation,Recurrence,我找不到我的问题的解决方案,因为通常解决方案(在大操作系统术语中)是所问的,而不是展开的循环。 如果已经有人问过了,告诉我,我会删除 我在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)

我找不到我的问题的解决方案,因为通常解决方案(在大操作系统术语中)是所问的,而不是展开的循环。 如果已经有人问过了,告诉我,我会删除

我在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解决方案,尽管这不是我现在想要找到的

有谁能给我解释一下得到正确答案的正确方法吗


谢谢。

这个问题与类似


您可能也知道如何解决这个问题……

这个问题与类似

你可能也知道如何解决这个问题……

不要展开答案,检查一下就可以了

因此,对于每个可能的答案,检查
T(1)=2
,如果替换给定的
T(n)
会使
T(n)=2T(n-1)+2相等。因此,对于第一个答案
T(1)=2^(n+1)-2=4-2=2
(按原样),并且:

使用simply=?=表示要检查的等式。 双方都要简化,这将导致:

2^(n+1)-2 =?= 2*2^(n)-2
剩下的就交给你了

不要把答案展开,检查一下就行了

因此,对于每个可能的答案,检查
T(1)=2
,如果替换给定的
T(n)
会使
T(n)=2T(n-1)+2相等。因此,对于第一个答案
T(1)=2^(n+1)-2=4-2=2
(按原样),并且:

使用simply=?=表示要检查的等式。 双方都要简化,这将导致:

2^(n+1)-2 =?= 2*2^(n)-2
剩下的我留给你们的

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。

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。

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

但如果你想展开它,你会得到:

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

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

但如果你想展开它,你会得到:

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

在T(n)=2^(n+1)+2中,如果我替换T(1)=2,我得到2^3-2=6;在T(n)=2T(n-1)+2中,如果我替换T(1)=2,我得到2*2(2-1)+2=6,所以我得到两者之间的相等,这将告诉我答案是正确的。这就是你的意思吗?编辑:另外,检查其他答案,他们会给我3、2和4作为结果,而不是6。不,对于这一个-保留公式中的n,并检查2^(n+1)-2和2*2^n-2是否相同(对于n的所有值)。但是,很明显,其他人都错了,因为你发现了一个公式错误的值。使用我用来查看公式中的值是否错误的方法有意义吗?因为这一次成功了,但我想知道它是否会再次成功。最重要的是,检查2^(n+1)-2和2*2^n-2对于n的所有值是否相同,非常感谢。在T(n)=2^(n+1)+2中,如果我替换T(1)=2,我得到2^3-2=6;在T(n)=2T(n-1)+2中,如果我替换T(1)=2,我得到2*2(2-1)+2=6,因此我得到两者之间的相等,这将告诉我答案是正确的。这就是你的意思吗?编辑:另外,检查其他答案,他们会给我3、2和4作为结果,而不是6。不,对于这一个-保留公式中的n,并检查2^(n+1)-2和2*2^n-2是否相同(对于n的所有值)。但是,很明显,其他人都错了,因为你发现了一个公式错误的值。使用我用来查看公式中的值是否错误的方法有意义吗?因为这一次成功了,但我想知道它是否会再次成功。最重要的是,检查所有n值的2^(n+1)-2和2*2^n-2是否相同,非常感谢。