Факториал в Erlang
Пример для версий
erl 5.7.3
Используется рекурсивное определение факториала. В Erlang нет встроенных циклов, поэтому цикл приходится симулировать рекурсивной функцией, которая начинает с больших значений N, но делает рекурсивный вызов для N-1 до того, как выводит N!. loop(_) — ветвь, которая задает поведение функции, если ее аргумент — не целое число или отрицателен (необходима для корректного определения функции).
-module(prog).
-export([main/0, loop/1]).
fact(0) -> 1;
fact(N) -> N * fact(N-1).
loop(N) when is_integer(N), N>=0 ->
loop(N-1),
io:format("~B! = ~B~n",[N,fact(N)]);
loop(_) -> ok.
main() -> loop(16).
Комментарии
]]>blog comments powered by Disqus
]]>