无法运行莫扎特代码

时间:2014-03-30 18:59:21

标签: mozart

local MainSum in
  fun {MainSum N}
    local Sum in 
      fun {Sum N Acc} 
        if N==0 then Acc 
          else Acc+{Sum N-1 N*N} 
        end 
      end 
     {Sum 5 0}
     end
  end
end

当我尝试此代码时,它显示以下错误

%************************** syntax error ************************
%**
%** nesting marker expected as designator of nested function
%**
%** in file "exercise.oz", line  2, column 7
%** ------------------ rejected (1 error)

1 个答案:

答案 0 :(得分:1)

您在我的计算机上编码工作...但您没有使用MainSum的参数

我相信你想做的事情:

local MainSum in
   fun {MainSum N}
      local Sum in 
         fun {Sum N Acc} 
            if N==0 then Acc 
            else Acc+{Sum N-1 N*N} 
            end 
         end 
         {Sum N 0}
      end
   end

   {Browse {MainSum 5}}
end

可以使用更简洁的表示法编写,并使用终端递归!

local
   fun{MainSum N}
      fun{Sum N Acc}
         if N==0 then Acc
         else {Sum N-1 N*N+Acc}
         end
      end
   in
      {Sum N 0}
   end
in
   {Browse {MainSum 5}}
end