Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Estructuras de Datos
Recursividad
Introduccin
Un procedimiento o funcin recursiva es aquella
que se llama a si misma.
La ejecucin del proceso recursivo se repite con valores
(parmetros) diferentes.
Algoritmos Recursivos
La recursividad est relacionada con el principio de
induccin.
Existe un caso base, en el que no existe ninguna llamada
recursiva.(Condicin o criterio base)
Existe un caso general conocido como caso inductivo, en las
que se realizan llamadas a versiones de la misma funcin con
parmetros diferentes que conducen al caso base.
Por lo tanto
Hay que incluir por lo menos un caso base, que se resuelva sin
necesidad de recursividad.
Todas las llamadas recursivas deben levar hacia el caso base
Algoritmos Recursivos
El caso base
Funcionamiento de la recursividad
Ntese que en una funcin recursiva es necesaria
una condicin para distinguir el caso base del
inductivo.
Para entender como funciona la recursividad es
necesario tener bien claro que en memoria no
existe una sola versin de la funcin recursiva.
Cada vez que se invoque la funcin recursiva se
crea una nueva versin de la misma.
La estructura de todas la versiones es la misma,
pero no as los datos que contiene cada una
Recursividad - Hctor Bazarte Torres,
Ing., ITSLP 2016
Factorial de un nmero
Caso base: fact(0) = 1
Caso general: fact(n) = fact(n-1)n
Int fact(int n)
{
if n(= =0)
return(1);
else
return(fact(n-1)*n)
}
Recursividad - Hctor Bazarte Torres,
Ing., ITSLP 2016
Funcionamiento de la recursividad
Main
n=3
Factorial
n=2
Factorial
n=1
Factorial
Devuelve 2*3 = 6
Factorial(2)*3
Devuelve 1*2 = 2
Factorial(1)*2
IDA VUELTA
Llamada
Valor
1
2
3
4 caso base
3
2
1
0
6
2
1
1
Devuelve 1*1 = 1
Factorial(0)*1
n=0
Factorial
Devuelve 1
Recursividad - Hctor Bazarte Torres,
Ing., ITSLP 2016
Funcionamiento de la recursividad
En el anterior ejemplo se ilustro cmo las llamadas recursivas
se van produciendo hasta alcanzar el caso base.
En ese punto se acaban las llamadas y empiezan las
devoluciones de valores hasta llegar al mtodo main.
Tenemos un movimiento en 2 sentidos
1 Hacia delante hasta alcanzar el caso base.
2 Hacia atrs devolviendo los resultados de cada llamada a la
funcin.
Correctitud en la recursividad
Cmo podemos determinar si un Algoritmo
Recursivo es o no correcto?
Por simple observacin es difcil.
Es posible alcanzar ese objetivo con la ayuda
del principio de induccin.
Verificando 1 el caso base, comprobando si
devuelve el resultado correcto para el valor ms
pequeo.
Verificando si el algoritmo funciona correctamente
para cualquier valor.
Recursividad - Hctor Bazarte Torres,
Ing., ITSLP 2016
10
Caractersticas comunes:
1. Ambas implican repeticin
La iteracin usa explcitamente una estructura de
repeticin mientras que la recursin logra la
repeticin mediante llamadas sucesivas a una
funcin.
11
12
13
14
Simulacin de la recursividad
Es posible simular la recursividad a travs del uso
de una estructura pila y as emular llamadas
recursivas.
Los parmetros de las llamadas a la funcin se van
almacenado en una pila hasta alcanzar el caso base.
La vuelta atrs se consigue, sacando de la pila las los
elementos almacenados y procesndolos uno a uno
hasta que la pila quede vaca.
15
Aplicaciones de Recursividad
Los algoritmos recursivos son muy importantes
en el diseo de algoritmos:
Backtracking (vuelta atrs), bsqueda exhaustiva, usa
recursividad para probar todas las soluciones posibles.
Divide y vencers, transforma el problema de tamao n
en problemas ms pequeos de tamao menor que n.De
tal modo que en base a problemas unitarios se
construye fcilmente una solucin del problema
completo. Ej. Bsqueda binaria, ordenamiento
Quicksort, Torres de Hanoi.
Recursividad - Hctor Bazarte Torres,
Ing., ITSLP 2016
16
Torres de Hanoi
Dice la leyenda que, al crear el mundo, Dios situ sobre la
Tierra tres varillas de diamante y sesenta y cuatro discos
de oro. Los discos son todos de diferente tamao e
inicialmente fueron colocados en orden decreciente de
dimetros sobre la primera de las varillas. Tambin cre
Dios un monasterio cuyos monjes tienen la tarea de
trasladar todos los discos desde la primera varilla a la
tercera. La nica operacin permitida es mover un disco de
una varilla a otra cualquiera, pero con la condicin de que
no se puede situar encima de un disco otro de dimetro
mayor. La leyenda dice tambin que cuando los monjes
terminen su tarea, el mundo se acabar.
Recursividad - Hctor Bazarte Torres,
Ing., ITSLP 2016
17
Poste
auxilia
r
18
19
20
}
}
21