如何解决这种递归关系:T(n)= T(n-1)* T(n-2)

时间:2014-10-21 18:42:38

标签: algorithm time-complexity recurrence

考虑这种递归关系:

T(n) = T(n-1) * T(n-2)    n>2
T(1) = 1, T(2) = 2

我怎么解决?最后:T(n) = O(?)

我认为我们应该记录双方或类似事情。 但我不知道要继续。

1 个答案:

答案 0 :(得分:1)

首先取两个部分的对数得到:

log(T(n)) = log(T(n-1)) + log(T(n-2))

现在您将log(T(n))替换为K(n),因此您必须解决问题K(n) = K(n-1) + K(n-2)。做类似的事情你会得到解决方案

K(n)= c1 * F(n)+ c2 * L(n),其中F(n)是Fibonacci number,L(n)是Lucas number和c1,c2只是一些常数。所以现在要得到你的答案,你只需要恢复对数。

所以你的解决方案是e^(c1 * F(n) + c2 * L(n))。根据我之前的解释,其复杂性为O(e^(phi^n))