因为Erlang里的变量只能一次赋值,所以并没有循环语句,只能用递归。所以所谓的Erlang for循环,也是用递归模拟的。看下面的求和代码:
for(Max, Max,Sum) ->
Sum+Max;
for(First, Max,Sum) ->
Sum2=Sum+First,
for(First + 1, Max, Sum2).
值得注意的是,如果循环次数过多,我们必须使用 尾递归。否则你的内存很快就会用光。尾递归我的理解是,调用了自身后,再没有别的代码要执行,概念上要说清楚还是比较 麻烦,各位意会吧。
下面是一个 非尾递归的示例:
loop() ->
{From, {rectangle, Width, Ht}} ->
From ! {self(), Width * Ht},
loop(),
someOtherFunc();
{From, {circle, R}} ->
From ! {self(), 3.14159 * R * R},
loop().
尽管尾递归不用消耗更的内存,然而它的效率仍然让我不敢恭维,我测试过1到100万的求和。用java的for循环实现,几乎是0秒就完成了,而用erlang的尾递归,却花了我33秒。下面是我的测试代码,如果你有更好的erlang实现,还请分享
main(_) ->
Start = calendar:datetime_to_gregorian_seconds({date(), time()}),
T=for(1,10000,0),
End = calendar:datetime_to_gregorian_seconds({date(), time()}),
io:format("~p ~p~n",[T,End-Start]).
for(Max, Max,Sum) ->
Sum+Max;
for(First, Max,Sum) ->
Sum2=Sum+First,
for(First + 1, Max, Sum2).
分享到:
相关推荐
**Erlang入门** Erlang是一种面向并发的、函数式编程语言,由瑞典电信设备制造商Ericsson在1986年开发,主要用于构建高度可靠和可扩展的分布式系统。这本书"Introducing Erlang"引领读者踏入这个独特的编程世界,...
erlang是爱立信开发的程序开发语言,融合了函数式编程与面向对象编程,并行处理内建与程序语言内部,特别适合创建并发行、容错性、分布性要求比较高的软实时系统,掌握它程序员必备的一种编程技能,与它相似的语言...
在这个"Erlang入门:构建application练习5(监督树)"中,我们将探讨如何构建一个包含监督树的应用,这是Erlang OTP(开放电信平台)设计模式中的核心部分。 监督树是Erlang OTP设计原则的重要组成部分,它用于管理...
### Erlang 入门学习经典资料解析 #### Erlang 的神秘与起源 Erlang,作为一门相对小众但极具特色的编程语言,自问世以来便伴随着一种神秘的气息。这种神秘感不仅源于它独特的编程范式——函数式编程,还在于其...
4. **Supervisor**:在Erlang OTP(开放电信平台)中,Supervisors是行为模式之一,用于实现容错和重启策略。`bank1_sup`模块应包含一个`supervisor`行为的实现,负责启动和监控子进程。 5. **模块和功能**:在`src...
我自己在新学erlang,在LeetCode OJ上找了题目练习,题目很适合新手熟悉语言,但是LeetCode OJ里面只有几门主流语言的答案,下面是已完成的erlang源代码,后续有空再做其他问题续传,题目包含:(源码开头都有题目...
本文将通过"erlang 入门练习"的案例,探讨Erlang的基础知识和应用。 首先,让我们从`client.erl`这个文件名入手。在Erlang中,`.erl`文件是源代码文件,包含了Erlang的模块定义和函数实现。`client`可能表示一个...
在Erlang编程语言中,进程是其核心特性之一,它们是并发执行的实体,类似于其他语言中的线程。在Erlang中,进程间通信(IPC)是通过消息传递来实现的,而`link`机制是这个通信模型中非常重要的一部分。本教程将通过...
这份名为"Erlang入门ppt"的资料是英文版的,但提供了深入理解Erlang语言的基础。 在20世纪90年代初,软件项目成功率低、大型项目失败率高是一个普遍问题。研究指出,16%的软件项目成功,53%虽然运行但未达到预期,...
### Erlang基础知识与特性 #### 一、Erlang简介 Erlang是一种专为处理大规模并发活动设计的编程语言,由瑞典电信设备制造商爱立信的计算机科学实验室(Computer Science Laboratory, CSLab)开发。该语言的目标是...
**Erlang程序设计与入门** Erlang是一种并发、函数式编程语言,主要用于构建分布式、高可用性、容错性强的系统。它的设计灵感来源于电信行业的需求,由瑞典爱立信公司于1986年开发。Erlang以其独特的并发模型、轻量...
ErLang 23.3.4 安装包,windosw版本64位安装包
erlang编程语言圣经 erlang从业人员的必备书籍 erlang语言开发入门
Erlang入门手册深入浅出地介绍了Erlang语言的基本概念,包括顺序编程、并行编程、健壮性以及OTP设计原则。它为初学者提供了一个坚实的基础,帮助他们理解Erlang的核心特性,并开始构建并发和容错的应用程序。文档...
"Introducing Erlang"是Simon St. Laurent撰写的一本入门级教程,旨在帮助初学者理解和掌握Erlang的核心概念和特性。 ### 1. 函数式编程基础 Erlang基于函数式编程范式,这意味着程序由纯函数构成,没有副作用。...
这个“erlang资源”包含两本PDF书籍——《Erlang并发编程》和《Erlang入门手册》,它们是深入理解和学习Erlang语言的关键资料。 《Erlang并发编程》这本书可能涵盖了以下知识点: 1. **并发模型**:Erlang的并发...