La Recursividad

 Bienvenidos mis queridísimos lectores hoy estamos de nuevo con estructuras de datos en java y vamos a iniciar en el día de hoy a ver la definición que es la recursividad regularmente para entender la recursividad hay una frase que dice "Para entender la recursividad, primero hay que entender  lo que es la recursividad"

¿Qué es la recursividad?

Es una técnica utilizada en programación que nos permite que un bloque de instrucciones se ejecute un cierto número de veces (el que nosotros determinemos). A veces es algo complicado de entender, pero no se preocupen. Cuando veamos los ejemplos sencillos estará todo clarísimo. En Java, como en otros muchos lenguajes, los métodos pueden llamarse a sí mismos. Gracias a esto, podemos utilizar a nuestro favor la recursividad.

Otra cosa que debes de entender es que la recursividad es un procedimiento para resolver un problema complejo reduciéndolo en uno o mas subproblemas.

Bueno por ejemplo, cuando subes a una escalera es un proceso repetitivo, es decir, primero subes a un escalón y luego otro pero es el mismo proceso, es un proceso que esta haciendo recurrente ósea que cuando ya inicias son 20 escalones y ya cuando avanzaste el primero ya solo te quedan 19 escalones nada mas y eso es recursividad .



Características de la recursividad 

  • Tiene la misma estructura que el problema original, por ejemplo cuando vamos subiendo a una escalera y das un paso para subir al segundo escalón se hace  un proceso recurrente pues es el mismo cuando tengas que subir entonces prácticamente es el mismo procesos de cuando iniciaste.
  • Mas simple de resolver que el problema original .
  • Cada subproblema se divide, usando el mismo procedimiento, en subproblemas aun mas simples.
  • Los subproblemas llegaran hacer tan simples que no hará falta dividirlos para resolverlos.

Un ejemplo fácil de ver es calcular el factorial de un número con recursividad. Como sabemos el factorial de un número se define como ese número multiplicado por el anterior y así sucesivamente hasta llegar a 1. Así, por ejemplo, el factorial del número 5 sería: 5 x 4 x 3 x 2 x 1 = 120.

Aquí le vamos a enseñar las dos manera de poder hacerlo uno de ellas es  por medio del bucle que es lo mas obvio que quizás seria simplemente de usarlo.


1. Primero lo que se debe hacer es crear un objeto para el factorial que le permita llamar los métodos que haremos e introducirle el N valor que vamos a factorizar



2. Como les dije el primero es por medio de ciclos, y como se observa en la imagen estamos usando el  ciclo for. 



3. La segunda forma es mediante recursividad sin necesidad de usar ninguna estructura de bucle. Esta versión de la función hace exactamente lo mismo, pero es más corta, más simple y más elegante:



aquí lo que se hace es que la función se llama a sí misma entonces eso es recursividad , y deja de llamarse cuando se cumple  las dos condiciones en este caso  la primera condición es que sea menor que cero  donde retornara en cero  y sino si es igual que cero retornara en 1.

Si analizamos bien su ejecución paso a paso veríamos lo que está representado en la siguiente imagen 


Quiere decir que cuando llamamos a la primera función, ésta se llama a sí misma pero pasándole un número menos y así sucesivamente hasta llegar a la última. En el momento en el que alguna de ellas empieza a devolver valores hacia atrás, regresa la llamada a cada una de ellas, los valores devueltos se van multiplicando por el parámetro original en cada una de ellas, hasta llegar arriba del todo en el que la primera llamada devuelve el valor buscado.




Comentarios

Entradas populares de este blog

Tipos de Datos Abstractos (TDA)

Ejercicios de TDA y modularidad

Torres de Hanoi