2016-10-13 12 views
0

OZ Mozartを新しくしました。私は三角シーケンスを書こうとしていますが、プログラミングは機能しません。構文エラー、予期しない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

私は三角シーケンスが何であるかをよく理解していれば、それは簡単な実装です。しかし、まず、あなたのエラーは、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}} 

、それは逆の順序で三角形のシーケンスを与え、あなたは簡単にあなたの欲求に応じてそれを修正することができます。

関連する問題