Está en la página 1de 8

RECURSIVIDAD JAVA

CONCEPTO
Primero debemos decir que la recursividad no es una
estructura de datos, sino que es una tcnica de
programacin que nos permite que un bloque de
instrucciones se ejecute n veces.

En Java los mtodos pueden llamarse a s mismos. Si


dentro de un mtodo existe la llamada a s mismo
decimos que el mtodo es recursivo.

MTODO RECURSIVO
Cuando un mtodo se llama a s mismo:

1. Se asigna espacio en la pila para las nuevas


variables locales y parmetros.

2. Al volver de una llamada recursiva, se recuperan

de la pila las variables locales y los parmetros


antiguos y la ejecucin se reanuda en el punto de
la llamada al mtodo.

.Podemos pensar que cada llamada supone


hacerlo a un mtodo diferente, copia del
original, que se ejecuta y devuelve el resultado a
quien lo llam.

EJEMPLO 1

1. Desde la main se llama a la funcin imprimir y se le enva el valor 5. El parmetro x recibe el valor 5. Se ejecuta el
algoritmo de la funcin, imprime el contenido del parmetro (5) y seguidamente se llama a una funcin, en este
caso a s misma (por eso decimos que es una funcin recursiva), envindole el valor 4.

2. El parmetro x recibe el valor 4 y se imprime en pantalla el cuatro, llamando nuevamente a la funcin imprimir
envindole el valor 3.

3. Si continuamos este algoritmo podremos observar que en pantalla se imprime:


hasta que se bloquee el programa.

5 4 3 2 1 0 ?1 ?2 ?3 . . . . . . . . .

EJEMPLO 2

PUNTOS A TOMAR EN CUENTA


No se debe utilizar la recursin cuando la iteracin (bucles para repetir
cdigos) ofrece una solucin obvia.

Para medir la eficacia de un algoritmo recursivo se tienen en cuenta


tres factores:
Tiempo de ejecucin
Uso de memoria
Legibilidad y facilidad de comprensin

Las soluciones recursivas suelen ser ms lentas que las iterativas por
el tiempo empleado en la gestin de las sucesivas llamadas a los
mtodos. Adems consumen ms memoria ya que se deben guardar
los contextos de ejecucin de cada mtodo que se llama.

EJEMPLO 3

Ordenar los valores de un


arreglo

FUENTES
http://
www.javamexico.org/blogs/oscarryz/para_entender_la_recursi
vidad_primero_hay_que_entender_la_recursividad

http://
www.javaya.com.ar/detalleconcepto.php?codigo=123&inicio
=40

http://
puntocomnoesunlenguaje.blogspot.mx/2012/04/recursividad-e
n-java.html

También podría gustarte