0

我是 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)

有什么想法吗?谢谢

4

1 回答 1

0

如果我很好理解三角序列是什么,那么followinf就是一个简单的实现。但首先你的错误意味着你必须在语句中使用then关键字。if不需要从 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}} 

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

于 2016-10-18T12:17:35.127 回答