我用 Erlang 编写了代码,并且在我的机器上得到了正确的答案。但是当我在 SPOJ 上提交它时它给出了一个 NZEC(非零退出代码)错误。我使用过像 halt()
这样的内置函数。和 init:stop()
,并且他们的规范清楚地表明它们用于避免非零退出代码错误。但我仍然得到同样的错误。我怎么解决这个问题?
编辑 注释要求的代码:
-module(factorial).
-export([main/0]).
main() ->
{ok, [No_of_cases]} = io:fread("", "~d"),
loop(No_of_cases).
loop(0) ->
%init:stop();
halt(1);
loop(No_of_cases) ->
{ok, [Number]} = io:fread("", "~d"),
ResultFactorial = find_factorial(Number,1),
io:format("~p~n",[ResultFactorial]),
loop(No_of_cases-1).
find_factorial(0,Product) ->
Product;
find_factorial(Number,Product) ->
find_factorial(Number-1,Product*Number).
最佳答案
我得到了答案。诀窍是您的模块名称必须始终为 tested
入口点应该是函数主要 .例如,编译后应该运行为测试:main() .
关于erlang - 避免 SPOJ 中 Erlang 中的 NZEC 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3310121/