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]