Erlang - 如何返回元素数/元素数

Aar*_*cia 2 erlang

这是我的第一个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)


Ant*_*ong 5

您的代码几乎在那里。学习的关键技能: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)