LYSE-递归

介绍

一般函数式编程语言都没有循环,而是使用递归来实现。

一个求阶乘的递归函数:

-module(recursive).
-export([fac/1]).
 
fac(N) when N == 0 -> 1;
fac(N) when N > 0  -> N*fac(N-1).

利用模式匹配来精简代码:

fac(0) -> 1;
fac(N) when N > 0 -> N*fac(N-1).

 

求列表长度

len([]) -> 0;
len([_|T]) -> 1 + len(T).

当列表很长时,消耗很多内存。

使用尾部递归可以解决这个问题:

tail_len(L) -> tail_len(L,0).
 
tail_len([], Acc) -> Acc;
tail_len([_|T], Acc) -> tail_len(T,Acc+1).

 

posted on 2015-11-26 11:38  神气小宇  阅读(151)  评论(0编辑  收藏  举报

导航