Erlang-返回元素数

时间:2019-01-21 06:11:29

标签: erlang

我找到了解决此问题的方法,但无法正常工作。

enter link description here

怎么了? 我总是得到0的结果。

num([]) -> 0;
num(NUMS) ->
        num(NUMS, 0).

num([H|L], Count) when H < 1 ->  %% use of guard
        num(L, Count+1);
num([_|L], Count) ->
        num(L, Count);
num([], Count) ->
        Count.

这是使用enter image description here

的示例

//编辑 我发现问题出在哪里。这是正确的代码。

num([]) -> 0;
num(NUMS) ->
        num(NUMS, 0).

num([H|L], Count) when H < 1 ->  %% use of guard
        num(L, Count+1);
num([_|L], Count) ->
        num(L, Count+1);
num([], Count) ->
        Count.

1 个答案:

答案 0 :(得分:0)

在num / 2函数中不需要第一个模式:

num([_|L], Count) ->
        num(L, Count+1);
num([], Count) ->
        Count.

就足够了。