現在機能しているこの階乗関数がありますが、結果は必要なものではありません。
コードは次のとおりです。
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))))
はozのように書くことができる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}}