码迷,mamicode.com
首页 > 其他好文 > 详细

LYSE-递归

时间:2015-11-26 12:30:42      阅读:133      评论:0      收藏:0      [点我收藏+]

标签:

介绍

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

一个求阶乘的递归函数:

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

 

LYSE-递归

标签:

原文地址:http://www.cnblogs.com/sqxy110/p/4997208.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!