Actividad 1 Unidad III


RESUMEN

La recursividad es un tópico importante examinado frecuentemente en cursos de programación y de introducción a las ciencias de la computación. Un método que tiene sentencias entre las que se encuentra al menos una que se llama al propio método se dice que es recursivo.
Un método recursivo es un método que se invoca a sí mismo de forma directa o indirecta. En recursión directa, el código del método f () contiene una sentencia que invoca a f (), mientras que en recursión indirecta el método f () invoca a un método g () que invoca a su vez al método p (), y así sucesivamente hasta que se invoca de nuevo al método f ().
Un requisito para que un algoritmo recursivo sea correcto es que no genere una secuencia infinita de llamadas sobre sí mismo, así mismo un método recursivo correcto debe incluir un componente base o condición de salida, ya que en caso contrario produce una recursión infinita.
La recursión directa se produce cuando un método P contiene dentro de sí un llamado a sí mismo.
La recursión indirecta se produce cuando un método llama a otro, que eventualmente terminará llamando de nuevo al primer método.
La recursión infinita significa que cada llamada recursiva produce otra llamada recursiva, y esta a su vez otra llamada recursiva, y así para siempre.
La recursión tiene muchas desventajas. Se invoca repetidamente al mecanismo de llamadas a métodos y, en consecuencia, se necesita un tiempo suplementario para realizar cada llamada, esta característica puede resultar cara en tiempo de procesador y espacio de memoria, cada llamada recursiva produce que otra copia del método sea creada; esto puede consumir memoria considerablemente, por el contrario la iteración se produce dentro de un método de modo que las operaciones suplementarias de las llamadas al método y asignación de memoria adicional son omitidas.

Recursividad
Definición
Tipos
Diferencias
Ventajas
Desventajas
Es una técnica de programación que permite que un bloque de instrucciones se ejecute n veces, directamente o a través de otro método.
Directa
Cuando un método P contiene dentro de sí un llamado a sí mismo.
- Asignación de memoria estática o dinámica.
- Se pueden aplicar los dos tipos de memoria.
- Reducción en el tamaño del código.
- El espacio de memoria es limitado.
-Los métodos son lentos.
- Consumen más memoria.
- Cada llamada implica el almacenamiento de variables de estado y otros parámetros.
Indirecta
Cuando un método contiene dentro de si un llamado a otro método Q que contiene llamados (directos o indirectos) a P.
Infinita
La clave de funcionamiento es que obligatoriamente existir una condición terminal con el objeto de que la función se verifique hacia una resolución no recursiva en algún punto. De lo contrario la función entra en un bucle infinito y nunca finaliza.

Positivo.

- Debe contener uno o más casos base, casos para los que existe una solución directa.
- Debe contener una o más llamadas recursivas, casos en los que se llama sí mismo.
- Reducción del código de programación.

Negativo.

- Pueden resultar complejas un algoritmo mal codificado.
- En algunos casos un programa, en su ejecución con determinados parámetros de entrada puede requerir tantas llamadas recursivas que llegue a agotar los recursos del sistema.

Interesante.

- Cada vez que se produce una nueva llamada al método se crean en memoria de nuevo las variables y comienza la ejecución del nuevo método.
- El uso de ambas memorias (dinámica y estática) en una misma clase.

Conclusiones:
La recursividad es buena para reducir el código que podemos emplear en algún programa realizado en java, pero que esta conlleva a mucho tiempo de ejecución siendo así una desventaja, la cual nos pone en un dilema como programadores en la búsqueda de un aprovechamiento completo de los programas.

BIBLIOGRAFÍA.
·         Fundamentos de Programación, Algoritmos, estructuras de datos y objetos, Luís Joyanes Aguilar, Mc-Graw Hill. Madrid, 2003.
·         Harvey M. Deitel, P. J. (2004). Como programar en JAVA. Mexico.: PEARSON educacion.
·         Drozdek, A. (2007). Estructura de Datos Y Algoritmos Con Java. Mexico: THOMSON.


No hay comentarios:

Publicar un comentario