家庭作业:递归功能的大哦

时间:2012-05-15 09:42:59

标签: algorithm recursion

这是我作业的一个问题。我不太清楚如何解决这样的问题。

If T(n) = nT(n - 1) and T(1) = 3, then
a) T(n) = O(n^n)
b) T(n) = Ω(n!)
c) T(n) = O(2^(nlogn))
d) none of the above

我不需要这个问题的确切答案(因为它的功课),但我想知道如何告诉递归函数的界限。

2 个答案:

答案 0 :(得分:6)

尝试解决它。假设n = 3。会有多少次迭代?如果n = 4怎么样?当您增加n时,迭代次数会增加多快?

另一种看待它的方法是:在公式中,函数如何“分支”?线性函数不分支,它们只有简单的1:1递归。指数函数将分支多次。对数函数分支,但降低了它们运行的​​数据的复杂性......等等。

答案 1 :(得分:3)

 For n = 4:

   T(4) = 4 * T(4-1)
     T(3) = 3 * T(3-1)
       T(2) = 2 * T(2-1)
         T(1) = 3

每次调用的执行时间为2步(乘法和 递归调用)。对于给定的示例,对于4个呼叫,您将有8个步骤 线性执行(你没有任何组合或对数 算法,所以你的函数受O(n)限制。

对于可能的选择,你得到的答案是:

a) T(4) = O(4^4) -> 256 

b) T(4) = Ω(4!) -> 24

c) T(4) = O(2^(4log4)) ~> 5.27

d) none of the above

所以你的选择应该是d。希望它有所帮助。