这是我的第一个Erlang项目.基本上,我必须编写一个函数,它将整数列表作为参数,并返回列表中小于1的整数.到目前为止,我所拥有的函数只返回列表中的整数.我不确定在哪里/我是否应该将if语句和计数器仅返回多少个整数小于1.
-export([num/1]).
num([]) -> 0 ;
num(L) -> num(L,0).
num([],Len) -> Len;
num([_|T],Len) ->
num(T,Len+1).
Run Code Online (Sandbox Code Playgroud)
kma*_*mac 13
您可以使用length()来查找列表的长度,并可以使用 列表推导 来过滤列表.
num(L) -> length([X || X <- L, X < 1]).
Run Code Online (Sandbox Code Playgroud)
工作范例:
% list counter program
-module(listcounter).
-export([printnum/0, num/1]).
printnum() ->
L = [1,2,3,0,0],
io:fwrite("List size: ~p\n",[num(L)]).
num(L) ->
length([X || X <- L, X < 1]).
Run Code Online (Sandbox Code Playgroud)
您的代码几乎在那里。学习的关键技能:guard
-export([num/1]).
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.
Run Code Online (Sandbox Code Playgroud)