Algorithm 家庭作业:递归函数的大Oh

Algorithm 家庭作业:递归函数的大Oh,algorithm,recursion,Algorithm,Recursion,这是我作业中的一个问题。我不太清楚如何解决这样的问题 如果T(n)=nT(n-1)和T(1)=3,则 a) T(n)=O(n^n) b) T(n)=Ω(n!) c) T(n)=O(2^(nlogn)) d) 以上各项均不适用 我不需要这个问题的确切答案(因为它是我的家庭作业),但我想知道如何判断递归函数的界。试着解决它。假设n=3。有多少次迭代?如果n=4呢?当您增加n时,迭代次数增长的速度有多快 另一种看待它的方式是:在公式中,函数如何“分支”?线性函数没有分支,它们只有简单的1:1递归。指数

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

如果T(n)=nT(n-1)和T(1)=3,则
a) T(n)=O(n^n)
b) T(n)=Ω(n!)
c) T(n)=O(2^(nlogn))
d) 以上各项均不适用


我不需要这个问题的确切答案(因为它是我的家庭作业),但我想知道如何判断递归函数的界。

试着解决它。假设
n=3
。有多少次迭代?如果
n=4
呢?当您增加
n
时,迭代次数增长的速度有多快

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

 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。希望有帮助。

我不是100%确定你提到的第一部分。以我的问题为例。当
n=3
我知道会有这样的函数调用
T(1)=>(返回结果到)2T(2-1)=>3T(3-1)
,但我如何从中确定界限?那么,你确定当
n=3
时将有3次迭代。那么
n=4
呢?你能预测
n=5
吗?我认为当
n=4
n=5
时会有4次迭代,有5次迭代吗?如果是这样的话,会是
O(n)
?确实会的,@AllanJiang,确实会的。谢谢你的回答,但是如果问题是
T(n)=T(n-1)+T(n-2)
,就像斐波那契函数一样?这是
O(n^2)
?当它的
O(log^n)
O(nlog^n)
时会发生什么情况再问一个小问题,你能给我一个递归函数,它有
O(nlogn)
O(logn)
?谢谢你,当然,对于O(nlogn)快速傅里叶变换、堆排序、快速排序、合并排序或f(x)=n+log(n)!对于O(logn),在排序数组上的二进制搜索或二项式堆中的任何操作,并使用矩阵乘法计算斐波那契序列。查看维基上关于它们的内容,它们对所有算法都给出了很好的解释。