Recursividad Un objeto se dice que es recursivo
Recursividad Un objeto se dice que es recursivo si él mismo forma parte de su definición. Ejemplos de objetos recursivos: • Una locomotora es un tren • Un tren es un vagón enganchado a un tren • El factorial de 0 es 1 • El factorial de un numero natural es el producto de dicho numero por el factorial de su antecesor
Algoritmo recursivo Un programa o algoritmo se denomina recursivo si está directa o indirectamente basado en sí mismo
Algoritmo recursivo Todo programa recursivo debe tener: • Condición de parada o punto conocido del dominio que ponga fin a la recursividad. • Al menos una llamada a sí mismo. (invocación recursiva)
Algoritmo recursivo – Ejemplo: Factorial | 1 si n = 0 Fact (n) = | | n* Fact (n-1) si n > 0 Algoritmo: Function fact(n: integer): integer; /* calcula n! */ Begin if (n = 0) then fact : = 1 else fact : = n* fact(n-1); End;
¿Cómo se evalúa un algoritmo recursivo? Ejemplo: factorial, n=5 120 fact (5) = 5 * fact (4) 24 fact (4) = 4 * fact (3) 6 fact (3) = 3 * fact (2) 2 fact (2) = 2 * fact (1) 1 fact (1) = 1 * fact (0) 1 fact(0) = 1
Ventajas • Soluciones elegantes y fáciles de entender. • Soluciones más simples.
Desventajas Si la profundidad de la recursión (es decir, el número de invocaciones recursivas) es muy grande puede traer problemas de memoria RAM y se produce un desbordamiento. Ocurre cuando el problema es demasiado grande para la memoria RAM o cuando no converge al valor del punto de parada (error de diseño de la solución)
Programación Orientada a Objetos
- Slides: 8