erlang中循环结构的例子

来源:互联网 发布:vb鱼味精作用 编辑:程序博客网 时间:2024/06/08 06:51

http://blog.163.com/mr_zyf/blog/static/6024216120101114105758903/

由于erlang本身就没有循环指令,所以要依靠函数的匹配和递归来实现。

例1:在指定范围循环

代码:

 forRange(Begin,End) when Begin<End -> 
    io:format("~p ",[Begin]),
    forRange(Begin+1,End);
forRange(_,_)-> %%匹配Begin>=End时,结束循环
   io:format("~n"),
   ok.

%%调用 forRange(-10,-1)
%%结果 -10 -9 -8 -7 -6 -5 -4 -3 -2

例2:指定循环次数

代码:

for(N) when N>0 ->
   %code%
   io:format("~p ",[N-1]),
   for(N-1);
for(0)-> %%匹配0时,结束循环
   io:format("~n"),
   ok
;
for(_N)-> badarg. %%匹配N<0时,结束循环

%%调用 for(10)
%%结果:9 8 7 6 5 4 3 2 1 0

例3:列举数组每个元素

代码:

foreach([])-> %%匹配[]时,结束循环
   io:format("~n"), 
   ok;
foreach([Ele|Tail])->
   %%code%%
   io:format("~p ",[Ele]),
   foreach(Tail).


%%调用 foreach([0,1,2,3,4,5,6,7,8,9,10])
%%结果: 0 1 2 3 4 5 6 7 8 9 10

0 0