T(0)= 1,T(1)= 0,T(n)= 2 * T(n-2)的递归关系

时间:2017-10-14 23:15:17

标签: algorithm recursion recurrence

我正在尝试找到上述表达式的重复关系。

我推断出:

T(n)= C * T(n-2)

T(n-2)= 2C * T(n-4)

T(n-4)= 3C * T(n-6)

...

T(n)= k / 2C * T(n-k)

我被困在这里。这是正确的方法吗?在简化方程中没有T的简化递归关系是什么?

2 个答案:

答案 0 :(得分:3)

我写了一个python程序并找到了关系:

def rec(num):
    if num == 0:
        return 1
    elif num == 1:
        return 0
    else:
        return 2 * rec(num - 2)

经过多次测试,我发现了这条规则:

  

指数2,3,4,5,6,7,8 ......

     

结果2,0,4,0,8,0,1 ...... ....

因此当n = 2k&&时,结果可能是2 ^(n / 2)。 0当n = 2k + 1(k属于Z)时

答案 1 :(得分:1)

让我们在展开此函数m次时观察行为:

T(n) = 2^2 * T(n - 2*2)
     = 2^3 * T(n - 2*3)
     = 2^4 * T(n - 2*4)
     = ...
     = 2^m * T(n - 2m)

n时:

  • 偶:n - 2m最终等于零,这意味着最大值为m = n / 2,而T(n) = 2^(n/2)
  • 奇怪:"最终等于1,这意味着T(n) = 2^(...) * T(1) = 0

如果我们想在一个表达式中写这个:

T(n) = (1 - n + floor[n/2]) * 2^(n/2)