How to have a sum of numbers so that sum(4) would do 1+2+3+4

sep*_*czz 2 erlang erlang-shell

-module(test).
-export([sum/1]).

sum([]) -> 0;
sum([X|Xs]) -> X + sum(Xs) 
Run Code Online (Sandbox Code Playgroud)

This is what I have done so far though it only sums the numbers within a list like test:sum([1,2,3,4])

but I want it so that its like test:sum(4) will output 1+2...+n

How can I do this?

Hau*_*eth 5

您提供的此函数将对列表中的值求和,但是如果您要“重载”此函数以也支持整数,则可以编写:

-module(test).
-export([sum/1]).

sum([]) -> 0;
sum([X|Xs]) -> X + sum(Xs);

sum(0) -> 0;
sum(N) when is_integer(N) -> (N * (N + 1)) div 2.
Run Code Online (Sandbox Code Playgroud)

这使用模式匹配来检查参数的类型,然后选择要评估的函数的正确“版本”。