我有这个当前正在运行的阶乘功能,但我所拥有的结果并不是我需要的。
代码是:
declare
fun {Fact N}
if N==1 then [N]
else
Out={Fact N-1}in
N*Out.1|Out end
end
{Browse {Fact 4}}
结果是:[24,6,2,1]
但我需要结果显示:[1,2,6,24]
,我无法查看错误的位置。
答案 0 :(得分:2)
你想减少N,没有其他参数而不是N.
但是有一个问题:
[1 2 6 24]
实际上可以写成'|'(1 '|'(2 '|'(6 '|'(24 nil))))
以盎司为单位
所以在第一次或最后一次通话时,你的功能必须返回24|nil
... 这是我能想到的最好的功能:
declare
fun {Fact N}
fun{Aux N Nmax FactNminus1}
if N>Nmax then nil
else (FactNminus1*N)|{Aux N+1 Nmax FactNminus1*N}
end
end
in
{Aux 1 N 1}
end
{Browse {Fact 4}}