Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Recursión PDF
Recursión PDF
Algoritmos y
Estructura de
Datos I
1
Recursión
Como vimos en el Módulo 1, un problema complejo puede ser resuelto en
subproblemas más pequeños. En general, en programación se subdivide un
problema en funciones más específicas (y más simples), hasta donde se
logre un nivel de simplicidad que no justifique una subdivisión mayor.
Recursión
Si bien estos problemas pueden ser resueltos mediante el uso de la
recursión, también pueden ser resueltos a través de procesos iterativos. En
general, todo algoritmo recursivo puede ser planteado como un algoritmo
iterativo.
2
cuidado de no crear una lógica circular que termine haciéndonos entrar en
un bucle infinito. (Weiss, 2013, p. 288).
Demostración matemática
Demostraremos un teorema haciendo uso de la inducción matemática.
Teorema 1
“Para cualquier entero N≥1, la suma de los N primeros enteros, dada por:
𝑁(𝑁+1)
∑𝑛𝑖=1 𝑖 = 1 + 2 + ⋯ + 𝑁 𝑒𝑠 𝑖𝑔𝑢𝑎𝑙 𝑎 .
2
𝑁(𝑁+1) 1(1+1)
∑𝑛𝑖=1 𝑖 = 1 𝑒𝑠 𝑖𝑔𝑢𝑎𝑙 𝑎 = . " (Weiss, 2013, p. 289).
2 2
3
cierto para 1≤N≤K, entonces, debería ser cierto también para 1≤N≤K+1.
Este paso se lo suele nombrar como paso inductivo.
𝑘+1 𝑘
∑ 𝑖 = (𝑘 + 1) + ∑ 𝑖
𝑖=1 𝑖=1
𝑘+1
𝐾(𝐾 + 1)
∑ 𝑖 = (𝑘 + 1) +
2
𝑖=1
𝑘+1
𝐾+2
∑ 𝑖 = (𝑘 + 1) +
2
𝑖=1
Este resultado confirma el teorema para el caso K+1. Por tanto, por
inducción, el teorema es cierto para todos los enteros N≥1. (Weiss, 2013, p.
289).
4
Recursión básica
“Las demostraciones por inducción nos muestran que si sabemos que una
afirmación es cierta para el caso más pequeño y podemos demostrar que
un caso implica al siguiente, entonces sabemos que la afirmación es cierta
para todos los casos” (Weiss, 2013, p. 291).
sumaDePrimerosEnteros(N) {
Existen problemas en
los que su solución
//si n es igual a 1
programática es mejor si (n == 1) {
plantearla de manera //el método termina retornando el valor 1, que corresponde
recursiva, porque a la base S(1)=1
quedan más claros y retornar 1
son más fáciles de
entender. Sin
}
embargo, esto debe //si n es distinto de 1
analizarse sino {
cuidadosamente para //el método termina retornando la forma recursiva
garantizar que no sea retornar s(N-1)+N
a expensas de un gran
deterioro en la
}
administración de los }
recursos.
Como vemos, la función anterior calcula el valor de S(N) de manera
recursiva y resulta muy sencillo de interpretar. Este método funciona
correctamente.
5
S(2)=S(N-1)+N=S(2-1)+2=S(1)+2=1+2=3
S(3)=S(N-1)+N=S(3-1)+3=S(2)+3
S(3)=3+3=6
S(4)=S(N-1)+N)=S(4-1)+4=S(3)+4
S(4)=6+4=10
6
Podemos encontrar otras aplicaciones de la recursión, no solo el
desarrollado en esta lectura. Así, por ejemplo, podemos resolver
recursivamente los siguientes algoritmos: cálculo factorial, función de
Fibonacci, recorrido de una lista, búsqueda binaria, permutación de
caracteres de una cadena, etcétera.
7
Referencias
Sznajdleder, P. A. (2012). Recursividad. En D. Fernandez (Ed.), Algoritmos a fondo
con implementación en C y JAVA (pp. 463-486). Buenos Aires, AR: Alfaomega.