具有三个递归调用的递归函数的时间复杂度

问题描述 投票:2回答:1

具有以下递归关系的递归函数的时间复杂度是多少:

T(n) = T(n-1) + T(n-2) + T(n-3), T(0) = T(1) = 1 and T(2) = 2

我知道一个带有两个递归调用的函数会给出O(2 ^ n)的指数时间复杂度,这是否意味着具有上述递归关系的函数将具有O(3 ^ n)的时间复杂度?

谢谢您的帮助。

algorithm recursion big-o complexity-theory
1个回答
2
投票

更具体地说,假设您具有以下功能:

T(n) = T(n-1) + T(n-1) + T(n-1), T(0) = 1

写这个的方式时间复杂度恰好是O(3 ^ n)。

你的功能比这个功能好一点,但时间复杂度仍然是相同的O(3 ^ n)

现在,如果我们重写我的建议代码,如:

T(n) = 3 * T(n-1), T(0) = 1

复杂性只是O(n)!因为之前调用的结果在不被再次调用的情况下被重用。

因此,在您的实现中,如果您可以使用缓冲区来调用而只是使用以前调用的值(某些语言实际上可以支持此值),那么复杂性将降低到O(n)。

© www.soinside.com 2019 - 2024. All rights reserved.