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