2016-10-13 5 views
0

오존 모차르트를 처음 접했으므로 삼각형 시퀀스를 쓰려고하는데 프로그래밍이 작동하지 않습니다.구문 오류, 예기치 않은 T_end, 예상 T_the

declare 
fun {Sequence N R} 
    fun {Help I} 
     if I < N 
    sum = {Int.toFloat(N*(N+1)/2.0)} 
    %I + 1 
    case R of nil then {Append [sum] nil} 
    [] H|T then sum|H|T 
    end 
    I+1 
     end 
    end 
in 
    {Help 0} 
end 

declare 
{Browse {Sequence 5 nil}} 

프로그래밍에 문제가 있다면? 다음과 같은 오류가 표시됩니다.

%*************************** parse error ************************ 
%** 
%** syntax error, unexpected T_end, expecting T_then 
%** 
%** in file "c:/Users/admin/Desktop/test (2).oz", line 11, column 6 
%** ------------------ rejected (1 error) 

그 밖의 생각은 있으십니까? 감사합니다.

답변

0

삼각형 시퀀스가 ​​무엇인지 잘 이해하면 followinf는 간단한 구현입니다. 그러나 무엇보다 먼저 귀하의 오류는 if 문에 then 키워드를 사용해야한다는 것을 의미합니다. float에서 int 로의 유형 변환은 모든 숫자에 후속 숫자를 곱한 값이 홀수이기 때문에 필요하지 않습니다. 이렇게하면 변수 관리가 단순 해집니다. 는 여기에 내가 제안 내용은 다음과 같습니다

declare 

fun {Sequence N} 
    local X in 
    if N>0 then 
     X = (N*(N+1) div 2) 
     X|{Sequence N-1} 
    else nil 
    end 
    end 
end 

{Browse {Sequence 5}} 

이 그냥 예를 들어, 그것은 역순으로 삼각형의 순서를 제공하고, 당신은 쉽게 당신의 욕망에 따라 문제를 해결할 수 있습니다.