我找到了解决此问题的方法,但无法正常工作。
怎么了? 我总是得到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.
答案 0 :(得分:0)
在num / 2函数中不需要第一个模式:
num([_|L], Count) ->
num(L, Count+1);
num([], Count) ->
Count.
就足够了。