Recursividad • Concepto • Un proceso es Recursivo cuando forma parte de sí mismo • Condiciones básicas de Recursividad • El proceso es finito • El proceso es repetitivo con llamadas a sí mismo • El proceso se inicializa en cada llamada. Tipos de Recursividad • Según el sub programa al que se hace la llamada • Recursividad Simple o Directa • La función incluye una referencia explícita a sí misma • Ejemplo: Función recursiva para calcular el Factorial de un número Tipos de Recursividad • Según el sub programa al que se hace la llamada • Recursividad Mutua o indirecta • La función u operación llama a otras funciones de forma anidada y en la última llamada se llama al primero. • Ejemplo: Función recursiva de Ackermann Tipos de Recursividad • Según el modo en que se hace la llamada • Recursividad de Cabeza • La llamada se hace al principio del sub programa, de forma que el resto de instrucciones se realizan después de todas las llamadas recursivas. • Sintaxis: Recursividad de cabeza • Ejemplo en C++
• Ejecución del programa
Tipos de Recursividad • Según el modo en que se hace la llamada • Recursividad de Cola • La llamada se hace al final del sub programa, de forma que el resto de instrucciones se realizan antes de hacer la llamada recursiva. • Sintaxis: Recursividad de cola • Ejemplo en C++
• Ejecución del programa
Tipos de Recursividad • Según el modo en que se hace la llamada • Recursividad Intermedia • Las instrucciones aparecen tanto antes como después del sub programa. • Sintaxis: Recursividad intermedia • Ejemplo en C++
• Ejecución del programa
Tipos de Recursividad • Según el modo en que se hace la llamada • Recursividad Múltiple • Se producen varias llamadas en distintos puntos del sub programa. • Sintaxis: Recursividad múltiple • Ejemplo en C++
• Ejecución del programa
Tipos de Recursividad • Según el modo en que se hace la llamada • Recursividad Anidada • La llamada recursiva utiliza un parámetro que es resultado de una llamada recursiva. • La recursión se produce en un parámetro de la propia llamada recursiva. • Sintaxis: Recursividad anidada (caso 1: Fibonacci) • Ejemplo en C++
• Ejecución del programa
Recursividad anidada (caso 2: Función h) • Ejemplo en C++
• Ejecución del programa
ESTRUCTURA DE DATOS ORIENTADO A OBJETOS INGENIERÍA DE SISTEMAS