Избегайте ошибок NZEC в Erlang в SPOJ - PullRequest
4 голосов
/ 22 июля 2010

Я написал код на 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).

1 Ответ

4 голосов
/ 23 июля 2010

Я получил ответ. Хитрость в том, что имя вашего модуля всегда должно быть tested, а точка входа должна быть функцией main . Например, после компиляции он должен быть запущен как испытания: main () .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...