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