Recursion 递归n选择k码的大(O)

Recursion 递归n选择k码的大(O),recursion,time-complexity,combinations,Recursion,Time Complexity,Combinations,下面的递归代码的大(O)是否只是O(n选择k) 我不确定这个符号是否正确,但我想你可以为这个函数编写递归,比如 T(n) = T(n-1, k) + T(n-1, k-1) + O(1) 既然你有两条可能的路径,我们只需要分析每一条最坏的情况,然后选择最慢的 T(n-1,k)的最坏情况 假设0你画了一棵树吗?代码与斐波那契序列代码非常相似,所以我将离开这里。@erip使用一棵树,我估计它可能是2^n,但从获得nchoosek的数学计算来看,它似乎是以n为界的!相反,请注意,2^n是O(n!)。

下面的递归代码的大(O)是否只是O(n选择k)


我不确定这个符号是否正确,但我想你可以为这个函数编写递归,比如

T(n) = T(n-1, k) + T(n-1, k-1) + O(1)
既然你有两条可能的路径,我们只需要分析每一条最坏的情况,然后选择最慢的

T(n-1,k)
的最坏情况


假设
0你画了一棵树吗?代码与斐波那契序列代码非常相似,所以我将离开这里。@erip使用一棵树,我估计它可能是2^n,但从获得nchoosek的数学计算来看,它似乎是以n为界的!相反,请注意,2^n是O(n!)。然而,对我来说,某种程度上是违反直觉的:n!是o(2^(2^n))
T(n) = T(n-1, k) + T(n-1, k-1) + O(1)
T(n-1, k) = T(n-1) = O(n)
T(n-1, k-1) = T(n-1) = O(n)
nCk = n!/k!(n-k)! 
n! => O(n)
k! => O(k) = O(n)
(n-k)! => O(n-k) = O(n)
T(n) = 3*O(n) + 2*O(1) = O(n)