Recursion 以下代码的运行时

Recursion 以下代码的运行时,recursion,time-complexity,Recursion,Time Complexity,所以我的代码是 function mystery(n, k): if k ≥ n return foo(n) sum = 0 for i = k to n sum = sum + mystery(n, k+1) return sum 我已经创建了一棵树,得到的答案是$n^2*(n-1)!$。foo在哪里是O(n.)是正确的吗?你是正确的。如果将递归转化为迭代,则循环将运行三角形(n-k)次,其中triangle是三角形

所以我的代码是

function mystery(n, k):
     if k ≥ n 
        return foo(n) 
    sum = 0 
    for i = k to n 
        sum = sum + mystery(n, k+1) 
    return sum

我已经创建了一棵树,得到的答案是$n^2*(n-1)!$。foo在哪里是O(n.)是正确的吗?

你是正确的。如果将递归转化为迭代,则循环将运行三角形(n-k)次,其中triangle是三角形函数,即整数1到n的和

三角形(N)=N*(N-1)/2

把这个乘以O(n),去掉1/2常数,得到你的答案


[N.B.k是一个常数,出于复杂性的考虑,你也可以去掉它]

嗨,我写了N^2*(N-1)阶乘。是这样吗?是的。我的错误;它是阶乘(积1到n),而不是三角形(和1到n)。