2010-07-22 49 views
4

我已經在Erlang編寫代碼,並且在我的機器上得到了正確的答案。但是,當我在SPOJ上提交時,它會給出一個NZEC(非零退出代碼)錯誤。我使用了內置函數,如halt()init:stop(),它們的規範清楚地表明它們用於避免非零退出代碼錯誤。但是我仍然得到同樣的錯誤。我怎麼解決這個問題?在Erlang中避免NZEC錯誤SPOJ

編輯所要求的註釋代碼:

-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). 
+0

也許如果你能夠對你的代碼進行一些處理或者至少有一個錯誤報告,那麼它會更容易幫助你... – 2010-07-22 15:11:06

+0

-module(階乘)。 -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]), 循環(No_of_cases-1)。 find_factorial(0,Product) - > Product; find_factorial(Number,Product) - > find_factorial(Number-1,Product * Number)。 此代碼用於查找factorial。運行在我的機器上,但在spoj中給出非零退出代碼錯誤 – niting112 2010-07-23 04:31:54

回答

4

我得到了答案。訣竅是您的模塊名稱必須始終爲tested,入口點應爲功能主要。例如,在編譯之後,它應該運行爲測試:main()

+0

請注意,截至2017年,Erlang模塊名稱必須爲「prog」。 – 2017-04-23 16:09:53