2013-10-18 1 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) 

그리고 당신이 당신의 최종 답변을 얻기 위해 여기에 조금 더 많은 일을한다.

관련 문제