开发学院

您的位置:首页>教程>正文

教程正文

Erlang 循环

Erlang 循环

  Erlang是一个函数式编程语言,需要记住的是,所有函数式编程语言都没有为循环提供任何构造。相反,函数编程依赖于一个称为递归的概念。

While循环的实现

  由于Erlang中没有直接的while语句,因此必须使用Erlang中的递归技术来实现while语句。

  我们将尝试遵循while循环的相同实现,就像其他编程语言一样。下面是将遵循的一般流程。

1-1606300H949335.jpeg

  让我们来看看如何在 Erlang 中使用递归来实现 while 循环。

-module(helloworld). 
-export([while/1,while/2, start/0]). 

while(L) -> while(L,0). 
while([], Acc) -> Acc;
while([_|T], Acc) ->
   io:fwrite("~w~n",[Acc]), 
   while(T,Acc+1). 
   
   start() -> 
   X = [1,2,3,4], 
   while(X).

  以下是上述程序需要说明的一些关键点 -

  •   定义一个名为 while 递归函数执行 while 循环;

  •   输入列表的值在定义变量X到 while 功能作为一个实例;

  •   while 功能同时会取到每个列表中的值并存储中间值到变量“‘Acc’”;

  •   while循环递归调用列表中的每个值;

  上面的代码的输出结果如下:

0
1
2
3

for循环的实现

  由于Erlang中没有可用的直接for语句,因此必须使用Erlang中可用的递归技术来实现for语句实现。

  我们将尝试遵循与其他编程语言相同的for循环实现。以下是应遵循的一般流程。

for_statement.jpg

  让我们来看看如何在 Erlang 使用递归来实现 for 循环。

-module(helloworld). 
-export([for/2,start/0]). 

for(0,_) -> 
   []; 
   
   for(N,Term) when N > 0 -> 
   io:fwrite("Hello~n"), 
   [Term|for(N-1,Term)]. 
   
start() -> 
   for(5,1).

  以下是程序需要说明的一些关键点 -

  •   我们定义一个递归函数来实例和执行 for 循环;

  •   我们使用的是 ‘for’ 函数以确保 N 或限制的值是正值;

  •   我们递归地调用 for 函数,通过在每一次递归后减少N的值。

  •   上面的代码的输出结果如下:

Hello
Hello
Hello
Hello
Hello