|
Herramientas para desarrolladores : Cursos, manuales y guías de referencia : Cursos : JavaScript avanzado : Funciones recursivas1. IntroducciónLa recursividad es una técnica de programación potente pero peligrosa. Para entender mejor en qué consiste, vamos a ver un ejemplo típico: el cálculo del factorial de un número. 2. Ejemplo de función recursivaRepasando las matemáticas (estas cosas se olvidan fácilmente) vemos que para calcular el factorial de un número n utilizamos la siguiente fórmula: n! = n * (n-1) * (n-2) * ... * (1) El siguiente script implementa este algoritmo haciendo uso de la recursividad: <HTML> 3. Explicación del ejemploVamos a intentar comprender cómo funciona el script anterior. La
función factorial() utiliza una sentencia
condicional if...then...else para determinar cuándo debe llamarse a sí misma.
En cada ejecución, la función se llama a sí misma con un valor que es una unidad
inferior al valor anterior. Así se implementa la recursividad del algoritmo. Si el parámetro de entrada de la función es menor que 1, devuelve 1 y se inicia el retorno (hay que observar que se retorna en cadena de todas las funciones factorial que hayan sido llamadas). 4. Ventajas e inconvenientesLa recursividad es confusa y, más aún, peligrosa. No es difícil que una programa recursivo deje sin memoria a la máquina sobre la que se está ejecutando, debido a un algoritmo mál codificado. Incluso cuando el programa es correcto, su ejecución con determinados parámetros de entrada puede requerir tantas llamadas recursivas que llegue a agotar los recursos del sistema (cada llamada implica el alamacenamiento de variables de estado y otros parámetros). Otro inconvieniente está en la velocidad. Las sucesivas llamadas a sí misma que realiza la fución recursiva ralentizan la ejecución de todo el proceso. La única gran ventaja de la recursividad está en la reducción, en algunos casos notable, del tamaño del código. Sin embargo, este aspecto nunca pesa más que la creación de un código seguro, rápido y estable.
|
|