【发布时间】:2014-05-10 00:19:52
【问题描述】:
我有这个当前正在工作的阶乘函数,但我得到的结果不是我需要的。
代码是:
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],而且我看不到错误在哪里。
【问题讨论】:
我有这个当前正在工作的阶乘函数,但我得到的结果不是我需要的。
代码是:
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)))) in 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}}
【讨论】: