Erlang 学习笔记 (2) -- 列表, 尾递归(循环语言的代替)
2014-05-19 10:04
393 查看
列表概念: 存储数目可变的东西, 类似一维数组.
下面建立一个购物列表~ThingsToBuy = [{apple,10}, {pear,6}, {milk,3} ].
列表定义: 如果L是一个列表, L=[H|T], H (head)为数组第一个元素, T (tail)为其余元素, [ ]为空元素.
这个定义看起来很啰嗦, 也不知道用来做什么, 看下下面的一个示例大概能明白一点儿:-module(test). -export([cost/1]). -export([total/1]). cost(apple) ->5; cost(pear) ->2; cost(milk) ->3. total([{What, N}|T]) -> cost(What)*N + total(T); total([]) -> 0.13> test:total([{apple,1},{milk,4},{pear,3}]).23示例就是一个计算购物车总金额的,
{apple,1},{milk,4}如 购物车里面有1个苹果, 4瓶牛奶, 3个梨, total 计算总金额,按一般来说, 做个循环就好了,而erlang的世界没有 所谓循环于是乎:total 计算第一个元素(T), 然后 递归计算其余部分total([{What, N}|T]) -> cost(What)*N + total(T);直到,剩余部分为空列表 []total([]) ->0.这里就是所谓的尾递归了~ (终于又点题了).<<<待续
相关文章推荐
- erlang 语言学习笔记
- 分布式、并行计算语言Erlang 学习笔记(第二部分)
- Erlang语法学习笔记:变量、原子、元组、列表、字符串
- Go语言学习笔记六: 循环语句
- 学习笔记☞ python 基础(python3)【三】(转义字符,字符串,while循环,break语句,列表)
- 32位汇编语言学习笔记(8)--分析do-while循环的汇编代码
- python 学习笔记之(四)while循环处理列表和字典
- 【.NET MVC学习笔记】--循环列表生成菜单
- 分布式、并行计算语言Erlang 学习笔记(第三部分)
- 32位汇编语言学习笔记(9)--分析while循环的汇编代码
- Go语言学习笔记 --- 控制语句之if判断,循环语句for, switch语句和跳转语句
- vue自定义组件和列表循环--vue学习笔记
- 批处理学习笔记3 - 变量声明和goto代替while循环
- django学习笔记---模板语言forloop循环
- GO语言学习笔记1(基本概念,条件循环语句)
- 黑马程序员-IOS学习笔记-C语言基础循环结构
- erlang循环结构:尾递归,列表解析
- erlang 语言学习笔记
- Go语言学习笔记六: 循环语句
- linux下c语言学习笔记——操作mysql