2014-03-30 28 views
-2
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) 
+2

你真的可以和應該給我們更多的工作;只是說「無法運行此代碼」1.不是一個問題,2.我們不知道實際發生的事情。我們不知道是否有錯誤,如果你的代碼崩潰了,如果你意外地創建了一個黑洞,在每次運行中吞噬十幾個小行星。如果您希望我們能夠提供幫助,請告知我們。越多的信息越好。 – computerfreaker

+0

只需提供更多信息,請 –

+0

我真的很抱歉我的錯誤 – user3478837

回答

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 
相關問題