erlang计算算术表达式时出错

erlang计算算术表达式时出错,erlang,Erlang,我是二郎的初学者。 这是我的代码: -module(squsum). -export([main/0]). ssum(1) -> 1; ssum(N) -> N*N + ssum(N-1). main() -> {_,T} = io:fread("","~d"), io:fwrite("~p~n",[ssum(T)]). 为什么会有这样的问题呢 ** exception error: an error occurred when evaluating an

我是二郎的初学者。 这是我的代码:

-module(squsum).
-export([main/0]).

ssum(1) -> 1;
ssum(N) -> N*N + ssum(N-1).

main() ->
    {_,T} = io:fread("","~d"),
    io:fwrite("~p~n",[ssum(T)]).
为什么会有这样的问题呢

** exception error: an error occurred when evaluating an arithmetic expression
     in function  squsum:ssum/1 (squsum.erl, line 5)
     in call from squsum:main/0 (squsum.erl, line 9)

T是一个包含值的列表,我猜它是IO:fwrite的对称观点。因此,只需使用:

main() -> {ok,[T]} = io:fread("","~d"), io:fwrite("~p~n",[ssum(T)]).

T是一个包含值的列表,我猜它是IO:fwrite的对称观点。因此,只需使用:

main() -> {ok,[T]} = io:fread("","~d"), io:fwrite("~p~n",[ssum(T)]).

我对erlang不太熟悉,但如果T可能为负,那么递归函数就永远不会结束


类似地,如果T=0,函数将永远不会结束。

我对erlang不太熟悉,但如果T可能为负,那么递归函数将永远不会结束


类似地,如果T=0,函数将永远不会结束。

这实际上是对Pascal答案的评论:只需添加io:fread/2返回格式字符串中指定的术语列表——即使格式字符串只有一个术语,它也返回一个包含一个元素的列表


erlang文档非常好。io:fread/2位于

这是对Pascal答案的评论:只需补充一点,io:fread/2返回格式字符串中指定的术语列表——即使格式字符串只有一个术语,它也返回一个包含一个元素的列表

erlang文档非常好。io:fread/2位于