介绍
一般函数式编程语言都没有循环,而是使用递归来实现。
一个求阶乘的递归函数:
-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).
时间: 2024-10-22 10:22:47