我有一个递归算法。不使用记忆,这是我的递归关系。如何计算时间复杂度?
答案 0 :(得分:7)
T(2) = T(1)
T(3) = T(2) + T(1) = T(1) + T(1) = 2*T(1)
T(4) = T(3) + T(2) + T(1) = 2*T(1) + T(1) + T(1) = 4*T(1)
T(5) = T(4) + T(3) + T(2) + T(1) = 4*T(1) + 2*T(1) + T(1) + T(1) ) = 8*T(1)
...
T(n) = 2(n-2)*T(1)
答案 1 :(得分:0)
你有 T(n) = sum(T(i) i=1..n-1)
然后对于 n>1,T(n+1) - T(n) = sum(T(i) i=1..n) - sum(T(i) i=1..n-1) = T(n)
所以对于 n>2,T(n) = 2T(n-1)。所以 T(n) 是 n>2 的 2^n 的倍数。一个简单的计算表明倍数是 T(1)/4(这恰好也适用于 n=2)。