无法运行莫扎特代码


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)

你的代码在我的电脑上工作…但是您没有使用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

最新更新