您的位置:首页 > 博客中心 > 互联网 >

LYSE-递归

时间:2022-04-27 19:17

介绍

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

一个求阶乘的递归函数:

-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).

 

本类排行

今日推荐

热门手游