Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Estructura de datos
ESTRUCTURA DE DATOS
UNIDAD 2
DOCENTE:
SEMESTRE TURNO
3 M1
CARRERA:
AULA: E3
Estructura de datos
INDICE
Contenido
RECURSIVIDAD .............................................................................................................................................. 3
2.1 Definición ............................................................................................................................................ 3
2.2 Procedimientos recursivos .................................................................................................................. 4
Definición Recursiva .............................................................................................................................. 4
Algoritmo de la Secuencia Fibonacci .................................................................................................... 4
Ejemplo: ................................................................................................................................................ 5
Procedimientos Recursivos ................................................................................................................... 5
b) Torres de Hanoi................................................................................................................................. 5
Reglas: ................................................................................................................................................... 5
Instrucciones ......................................................................................................................................... 6
Algoritmo de las Torres de Hanoi ......................................................................................................... 6
2.3 Ejemplos de Casos Recursivos. ........................................................................................................... 6
Bibliografía .................................................................................................................................................... 9
INGENIERÍA EN SISTEMAS COMPUTACIONALES
Estructura de datos
RECURSIVIDAD
2.1 Definición
➢ Factorial: Se desea calcular (la factorial de, que se define como el producto de
todos los enteros positivos de a). Se puede definir el problema de forma recurrente
como; como es menor que podemos aplicar inducción por lo que disponemos del
resultado. El caso base es que es.
➢ Algoritmo de ordenación por fusión: Sea v un vector de n elementos, podemos
separar el vector en dos mitades. Estas dos mitades tienen tamaño n/2 por lo que
por inducción podemos aplicar la ordenación en estos dos subproblemas. Una vez
tenemos ambas mitades ordenadas simplemente debemos fusionarlas. El caso
base es ordenar un vector de cero o un elemento, que está trivialmente ordenado
y no hay que hacer nada.
INGENIERÍA EN SISTEMAS COMPUTACIONALES
Estructura de datos
a) Secuencia Fibonacci:
Definición Recursiva
if n == 0 or n == 1 entonces
fib(n) = n
if n >= 2 entonces
Funcion FIB(n)
Inicio
Si n == 0 o n == 1 entonces
FIB<--n
Si No
FIB<--Fib(n-2)+FIB(n-1)
Fin_Si
INGENIERÍA EN SISTEMAS COMPUTACIONALES
Estructura de datos
Fin_Funcion
Ejemplo:
n=2
fib(2)=fib(2-2)+fib(2-1)
fib(2)=fib(0)+fib(1)
fib(2)=0+1
fib(2)=1
Procedimientos Recursivos
1) Función Factorial
2) Secuencia Fibonacci
3) Torres de Hanoi
4) Búsqueda Binaria
b) Torres de Hanoi
Reglas:
Estructura de datos
Instrucciones
Mover 1 disco de A a B.
Mover 1 disco de A a C.
Mover 1 disco de B a C.
Procedimiento Hanoi(N,ORIGEN,AUXILIAR,DESTINO)
Si N=1 entonces
Si No
Fin_Si
Fin_Procedimiento
Los programas recursivos tienden a ser menos eficientes que los iterativos, pero ganan
en claridad y simplicidad de código. Cuando se diseñan soluciones y se desea usar la
recursividad, hay que cuidar ciertos casos como el de la serie de Fibonacci
{
INGENIERÍA EN SISTEMAS COMPUTACIONALES
Estructura de datos
if ((posicion==1)or(posicion==2))
return posicion-1;
else
return fibo(posicion-1)+fibo(posicion-2);
Este procedimiento cumple con las reglas para un procedimiento recursivo, pero al
llamarse en 2 ocasiones a ejecución, se vuelve sumamente ineficiente para tamaños de
problema grandes
int fibo(int posicion)
if ((posicion==1)or(posicion==2))
return posicion-1;
else
return fibo(posicion-1)+fibo(posicion-2);
Estructura de datos
Hay otra clasificación que es no es tan importante desde el punto de vista de tiempo de
ejecución:
Estructura de datos
Bibliografía