2013-10-18 39 views
0

我想表达这个伪代码作为函数返回的内容。将伪代码表示为函数n

function mystery(n) 
    r := 0 
    for i:= 1 to n-1 do 
     for j:= i+1 to n do 
      for k:= 1 to j do 
       r:= r+1 
    return r 

我认为它可能是沿着f的东西线(N)= N *(N-1)^ 2 但我不认为这是完全正确的。有人可以解释一下,如果这是正确的,如果错误,那么我应该如何去得到正确的答案。

+0

相关问题 - [三重嵌套循环的时间复杂度](http://cs.stackexchange.com/q/3306)。 – Dukeling

+0

展开并使用最高期限 – megawac

回答

1

计算在一个时间的功能的一种循环:

for k:= 1 to j do 
    r:= r+1 

调用此函数K(j)。这应该是非常明显的,K(j) = j

现在我们出去一个循环:

for j:= i+1 to n do 
    r:=r+K(j) 

调用此函数J(i)。做更多的工作,你应该看到J(i) = (i+1) + (i+2) + ... + n。有一个这样的总和的数学公式(我会留给你来确定这一点)。

如今终于,最后的循环:

for i:= 1 to n-1 do 
    r:=r+J(i) 

然后你做更多的工作在这里,让您的最终答案。