参考资料:http://svn.liancheng.info/cpie-cn/trunk/.build/html/index.html
如下程序用于计算整数的阶乘。
-module(math1).
-export([factorial/1]).
factorial(0) -> 1;
factorial(N) -> N * factorial(N - 1).
注意,由于代码中没有对输入数据做限制,当传入的参数不是整数是可能会报错或者进入无限循环中。
所以我们可以对输入数据做必要的检查(使用子句保护式)。
factorial(N) when N == 0 -> 1;
factorial(N) when N > 0 -> N * factorial(N - 1).
使用if.
factorial(N) ->
if
N == 0 -> 1;
N > 0 -> N * factorial(N - 1)
end.
使用case.
factorial(N) ->
case N of
0 -> 1;
N when N > 0 ->
N * factorial(N - 1)
end.
使用变量保持临时数据.
factorial(0) ->
1;
factorial(N) when N > 0 ->
N1 = N - 1,
F1 = factorial(N1),
N * F1.