miércoles, 30 de noviembre de 2016

Factorial recursivo en Erlang: Tratamiento de casos y guardias

%Programa del factorial en Erlang....

-module(facto). % Archivo facto.erl, no se acepta de otro modo.
-export([fact/1]). % Función factorial a ser visible externamente.
% Toda función invocar desde fuera del módulo debe declararse aquí,
% en donde la notación fact/1 señala que fact es una función con un solo
% argumento.

fact(0) -> 1; %primer caso, notar la flecha y el punto y coma...
fact(N) when (N>0)
            and is_integer(N) -> N*fact(N-1). %segundo caso, notar el when
% que actúa como filtro con dos condiciones y la versión recursiva
% finalizada con un punto.
% Se dice que fact/1 fue definido recursivamente por dos cláusulas.
% La recursión es lineal, pero el espacio también se consume linealmente.

1 comentario:

  1. La declaración de la recursividad es bastante abstracta con respecto a otros lenguajes de programación como java, sin embargo hasta este punto y con los comentarios agregados en cada una de las líneas es bastante endendible.

    ResponderEliminar