• Cualquier problema que pueda resolverse en forma recursiva, se puede resolver también en forma iterativa.
• Por lo general se prefi ere un método recursivo en vez de uno iterativo cuando el primero refl eja el problema con más
naturalidad, y produce un programa más fácil de comprender y de depurar.
• A menudo se puede implementar un método recursivo con pocas líneas de código, pero el método iterativo corres-
pondiente podría requerir una gran cantidad de código. Otra razón por la que es más conveniente elegir una solu-
ción recursiva es que una solución iterativa podría no ser aparente.
Sección 15.8 Fractales
• Un fractal es una fi gura geométrica que se genera a partir de un patrón que se repite en forma recursiva, un número
infi nito de veces.
• Los fractales tienen una propiedad de auto-similitud: las subpartes son copias de tamaño reducido de toda la pieza.
Sección 15.9 “Vuelta atrás” recursiva (backtracking)
• Al uso de la recursividad para regresar a un punto de decisión anterior se le conoce como “vuelta atrás” recursiva.
Si un conjunto de llamadas recursivas no produce como resultado una solución al problema, el programa retrocede
hasta el punto de decisión anterior y toma una decisión distinta, lo cual a menudo produce otro conjunto de llama-
das recursivas.
Terminología
caso base
converger en un caso base
Copo de nieve de Koch, fractal
Curva de Koch, fractal
desbordamiento de pila
evaluación recursiva
factorial
Fibonacci, serie de
Fractal
fractal auto-similar
fractal estrictamente auto-similar
llamada recursiva
marco de pila
media dorada
método recursivo
nivel de un fractal
nivel del fractal
Ocho Reinas, problema
orden del fractal
palíndromo
paso recursivo
pila
pila de ejecución del programa
pila de llamadas a métodos
profundidad del fractal
proporción dorada
prueba de terminación
recorrido del laberinto, problema
recursividad exhaustiva
recursividad indirecta
recursividad infi nita
registro de activación
sobrecarga de ejecución
teoría de complejidad
torres de Hanoi, problema
último en entrar, primero en salir (UEPS),
estructuras de datos
“vuelta atrás”
“vuelta atrás” recursiva
Ejercicios de autoevaluación
15.1
Conteste con
verdadero o falso a cada una de las siguientes proposiciones; en caso de ser falso, explique por qué.
a) Un método que se llama a sí mismo en forma indirecta no es un ejemplo de recursividad.
b) La recursividad puede ser efi ciente en la computación, debido a la reducción en el uso del espacio en
memoria.
c) Cuando se llama a un método recursivo para resolver un problema, en realidad es capaz de resolver sólo el
(los) caso(s) más simple(s), o caso(s) base.
d) Para que la recursividad sea factible, el paso recursivo en una solución recursiva debe asemejarse al problema
original, pero debe ser una versión ligeramente más grande del mismo.
15.2
Para terminar la recursividad, se requiere un(a) _____________.
a)
paso
recursivo
b)
instrucción
break
c) tipo de valor de retorno
void
d)
caso
base
Ejercicios de autoevaluación
679
15_MAQ_CAP_15_DEITEL.indd679
4/19/081:29:07AM