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).
原文地址:https://www.cnblogs.com/sqxy110/p/4997208.html