martes, 27 de mayo de 2014

Recursividad

La recursividad es un concepto fundamental en matemáticas y en computación. Es una alternativa diferente para implementar estructuras de repetición (ciclos). Los módulos se hacen llamadas recursivas. 
 Se puede usar en toda situación en la cual la solución pueda ser expresada como una secuencia de movimientos, pasos o transformaciones gobernadas por un conjunto de reglas no ambiguas. 
La recursividad es el proceso de definir algo en términos de sí mismo, en otras palabras, que las funciones pueden llamarse a sí mismas. Cuando en el cuerpo de la función hay una llamada a la propia función, entonces se dice que es recursiva. Una función recursiva no hace una nueva copia de la función, sólo proporciona nuevos parámetros. 


Función Recursiva


Las funciones recursivas se componen de: 

  • Caso base: una solución simple para un caso particular (puede haber más de un caso base). La secuenciación, iteración condicional y selección son estructuras válidas de control que pueden ser consideradas como enunciados. 

  • Caso recursivo: una solución que involucra volver a utilizar la función original, con parámetros que se acercan más al caso base. Los pasos que sigue el caso recursivo son los siguientes: 
  1. El procedimiento se llama a sí mismo 
  2. El problema se resuelve, resolviendo el mismo problema pero de tamaño menor 
  3. La manera en la cual el tamaño del problema disminuye asegura que el caso base eventualmente se alcanzará 

Ventajas 

  • Se pueden generar soluciones en un código más pequeño. 
  • Se le puede dar solución a problemas complejos. 
  • Algunos problemas complejos que no se pueden resolver fácilmente con iteraciones se pueden resolver con recursividad. 
  • No es necesario definir una secuencia de pasos exacta para dar solución a un problema. 

Desventajas 

  • Se necesitan muchas variables para darle solución al problema 
  • La memoria se puede llegar a saturar debido a la gran cantidad de información que se almacena 
  • Una simple llamada puede generar un gran número de estas. 
  • Es menos eficiente que la solución iterativa, ya que lleva llamadas suplementarias a las funciones. 

No hay comentarios:

Publicar un comentario