Se dice que una función es recursiva cuando dentro de
su bloque de sentencias hay una llamada a la propia función.
En principio cualquier función puede hacerse una
llamada a sí misma, sin embargo, tiene que estar especialmente diseñada para
que funcione correctamente, ya que al llamarse a sí misma provoca que esta se
vuelva a ejecutar, y dentro de sus instrucciones se vuelve a llamar, creando un
bucle que si no está controlado se vuelve infinito.
Por lo tanto, una función recursiva forma un bucle al ser llamada a sí misma. Este bucle debe ser controlado de alguna manera para poder salir de él y no caer en estructuras indeseadas como bucles infinitos o estructuras que se autorreplican indefinidamente.
Ejemplo 1
El siguiente ejemplo pide al usuario que pulse una
tecla numérica. Mediante una función comprobamos la tecla pulsada. Si esta es
un número se sale de la función, pero si no lo es vuelve a pedir que se pulse
una tecla, se llama a sí misma para volver a comprobarlo.
Resultados
Ejemplo 2
En este ejemplo vamos a hacer que el usuario escriba
una frase y nosotros la repetimos un determinado número de veces.
Evidentemente sería mucho más fácil resolver el
problema utilizando un bucle, pero aquí se trata de ver cómo se puede resolver también
mediante una función recursiva. Veamos el ejemplo:
Resultados
Ejemplo 3
El factorial de un número se define como la multiplicación
de ese número por todos los que son menores que él. Sí lo los números naturales
(enteros positivos) pueden tener factorial. Por ejemplo, el factorial de 4 se
define como 4*3*2*1. El factorial de 6 es 6*5*4*3*2*1.
Matemáticamente la operación factorial se define escribiendo un signo de admiración detrás del número: 4! = 4*3*2*1.
Por lo tanto, los números negativos no tienen
factorial, y además el factorial de cero es 1.
Con todo esto vamos a hacer una función recursiva que calcule el factorial de un número. El programa será el siguiente:
El programa calcula el factorial del número. Para números
negativos devuelve el cero. Para el 0 y el 1 devuelve el 1, y para los demás números
positivos, mediante la recursividad, vamos multiplicando cada número por el
inmediatamente menor que si mismo hasta llegar a uno, para devolver el
factorial.
Resultados
Comentarios
Publicar un comentario