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?
您提供的此函数将对列表中的值求和,但是如果您要“重载”此函数以也支持整数,则可以编写:
-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)
这使用模式匹配来检查参数的类型,然后选择要评估的函数的正确“版本”。
| 归档时间: |
|
| 查看次数: |
81 次 |
| 最近记录: |