所以我的代码是
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。)它是否正确?
答案 0 :(得分:0)
你是对的。如果要将递归转换为迭代,则会有循环运行三角(nk)次 - 其中三角形是三角函数,整数1到N的总和。公式为
三角形(N)= N *(N-1)/ 2
将此乘以O(n),将1/2常数减去,这就产生了答案。
[N.B.由于 k 是出于复杂性目的的常量,因此您也放弃了]