我有这个当前正在工作的阶乘函数,但我得到的结果不是我需要的。
代码是:
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]
而且我看不到错误在哪里。
你想减少 N,除了 N 没有其他参数。
但是有一个问题:
[1 2 6 24]
实际上可以写成'|'(1 '|'(2 '|'(6 '|'(24 nil))))
oz24|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}}