Beruflich Dokumente
Kultur Dokumente
aplicaciones
ASPIRANTE: EDGAR RODRIGO LOPEZ SILVA
Definición
La recursión (recursividad) representa una poderosa técnica de programación en la que un
método se llama a sí mismo, es decir, desde la definición de dicho método.
Una excelente analogía a la recursión son el conjunto de muñecas rusas (matrioshka): Una
muñeca rusa tienen una muñeca rusa más pequeña dentro de ella, que tiene una muñeca rusa
aún más pequeña dentro de ella, hasta llegar a una muñeca rusa tan pequeña que ya no puede
contener otra.
Caso base
Método recursivo
Invocación recurrente
Clasificación
▪ Recursividad directa
𝑓 𝑁 = Θ 𝑁 𝑑 , 𝑑𝑜𝑛𝑑𝑒 𝑑 ≥ 0, 𝑒𝑛𝑡𝑜𝑛𝑐𝑒𝑠
𝑁 ▪ 𝑇 𝑁 = Θ 𝑁 𝑑 𝑠𝑖 𝑎 < 𝑏 𝑑 ,
𝑇 𝑁 = 𝑎𝑇 + 𝑓(𝑁)
𝑏 ▪ 𝑇 𝑁 = Θ 𝑁 𝑑 log 𝑁 𝑠𝑖 𝑎 = 𝑏 𝑑 ,
▪ 𝑇 𝑁 = Θ 𝑁 log𝑏 𝑎 𝑠𝑖 𝑎 > 𝑏 𝑑 .
Problemas sencillos
▪ Factorial de un número
▪ Serie de Fibonacci
Otras aplicaciones:
▪ Exponenciación (enteros)
▪ Suma de los primeros N enteros positivos
▪ Cálculo del mcd (máximo común divisor)
Problemas complejos
▪ Torres de Hanoi
▪ Búsqueda binaria
recursiva
Algoritmos de ordenamiento
▪ MergeSort
Emplea la estrategia divide-y-vencerás. Esta es una
de esas aplicaciones donde la recursividad resulta
mas eficiente (para un tamaño de entrada grande)
con respecto a algoritmos de ordenamiento
iterativos (i.e. ordenamiento por inserción).
▪ QuickSort
Posiblemente, este algoritmo es el más pequeño de
código, más rápido, más elegante y eficiente de los
algoritmos conocidos de ordenación (solo para un
tamaño de entrada pequeño).
Referencias bibliográficas
[1] L. J. Aguilar, “Fundamentos de programación”, 4th. Ed. Madrid: McGraw-Hill, 2008.
[2] T. Cormen, et al., “Introduction to algorithms”, 3rd Ed. Cambridge: The MIT Press, 2009.
[3] M. A. Weiss, “Data estructures and algorithm analysis in C++”, 4th. Ed. New Jersey: Pearson,
2014.