返回值在Erlang中显示在列表中的次数

时间:2015-12-02 01:33:40

标签: erlang find-occurrences

我对Erlang很陌生。这是我一直在努力的做法,但我无法编译我的代码。问题是返回值在列表中出现的次数。

e.g:

count(1, [2, 1, 2, 1, 2, 5])  ----> 2;
count(a, [a, b, c, d]) ----> 1;
count(a, [[a, b], b, {a, b, c}]) ----> 0
%% only consider top level of List

(我不明白"只考虑列表的最高级别"表示。)

这是我的代码:

-module(project).
-export([count/2]).

count(_, []) -> 0;
count(X, [X|XS]) -> 1 + count(X, [XS]);
count(X, [_|XS]) -> count(X, [XS]).

当我编辑它时,它说:

  

没有匹配项目的函数子句:count(1,[1,2,1,1,2])

1 个答案:

答案 0 :(得分:3)

列表的尾部已经是一个列表,因此当您递归调用函数时,不需要将它包装在新列表中。这样写它:

-module(project).
-export([count/2]).

count(_, []) -> 0;
count(X, [X|XS]) -> 1 + count(X, XS);
count(X, [_|XS]) -> count(X, XS).