我是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)
有什么想法吗? 谢谢
答案 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}}
这只是一个例子,它以相反的顺序给出一个三角形序列,你可以根据自己的需要轻松修复它。