我对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])
答案 0 :(得分:3)
列表的尾部已经是一个列表,因此当您递归调用函数时,不需要将它包装在新列表中。这样写它:
-module(project).
-export([count/2]).
count(_, []) -> 0;
count(X, [X|XS]) -> 1 + count(X, XS);
count(X, [_|XS]) -> count(X, XS).