语法错误,意外T_end,期待T_the

时间:2016-10-13 17:13:01

标签: oz mozart

我是OZ Mozart的新手,我试图写一个三角形序列,但编程不起作用。

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)

有什么想法吗? 谢谢

1 个答案:

答案 0 :(得分:0)

如果我很清楚三角形序列是什么,则以下是一个简单的实现。但首先,您的错误意味着您必须在if语句中使用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}} 关键字。 不需要从float到int的类型转换,因为每个数字乘以其后继数给出一个奇数。这简化了变量管理。 这是我的建议:

{{1}}

这只是一个例子,它以相反的顺序给出一个三角形序列,你可以根据自己的需要轻松修复它。