【erlang】练习题0000.基础递归练习

erlang没有for循环,这怪异的递归写法很别扭。

做题之前把这段代码牢记在心里,不是死记,要理解。

%模块名不重要
-module(lib_misc).
-export([for/3]).

for(Max,Max,F)  ->[F(Max)];
for(I,Max,F)    ->[F(I)|for(I+1,Max,F)].

然后再理解标准库的lists模块下的map方法的源代码

-module(lists).
-export([map/2]).

map(_,[])   ->[];
map(F,[H|T])->[F(H)|map(F,T)].

 

 

 

0.给定一个数Max,和数Min,从Max到Min降序输出列表

例如:seq_min(10,3).  返回[10,9,8,7,6,5,4,3].

 

想了半天,才开始写的都是死循环,共勉。

-module(lib_m).
-export([each/1,each/2]).

each(N)    -> each(N,0).
each(N,N)  -> [N];
each(N,L)  -> [N|each(N-1,L)].

 


列表推导,是个很好用的技巧,在我看来更像foreach

 L = lists:seq(0,10).

利用seq生成[0,1,2,3,4,5,6,7,8,9,10]

然后对每个元素 * 2

[ 2*X || X <- L ].

返回[0,2,4,6,8,10,12,14,16,18,20]

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章