Está en la página 1de 9

INGENIERÍA EN SISTEMAS COMPUTACIONALES

Ing. Iván Hernández Hernández

Estructura de datos

INSTITUTO TECNOLÓGICO SUPERIOR DE TAMAZUNCHALE

ESTRUCTURA DE DATOS

UNIDAD 2

DOCENTE:

ING. IVÁN HERNÁNDEZ HERNÁNDEZ

ALUMNO: NO. DE CONTROL

ELFEGO JOSHUE GONZÁLEZ PÉREZ 21ISC047

SEMESTRE TURNO

3 M1

CARRERA:

INGENIERIA EN SISTEMAS COMPUTACIONALES

AULA: E3

TAREA: ACTIVIDAD 01; RESUMEN

FECHA: 25 DE SEPTIEMBRE DEL 2022


INGENIERÍA EN SISTEMAS COMPUTACIONALES

Ing. Iván Hernández Hernández

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

Ing. Iván Hernández Hernández

Estructura de datos

RECURSIVIDAD

2.1 Definición

Recurrencia, recursión o recursividad es la forma en la cual se especifica un proceso


basado en su propia definición. Siendo un poco más precisos, y para evitar el aparente
círculo sin fin en esta definición: Un problema que pueda ser definido en función de su
tamaño, sea este N, pueda ser dividido en instancias más pequeñas (< N) del mismo
problema y se conozca la solución explícita a las instancias más simples, lo que se
conoce como casos base, se puede aplicar inducción sobre las llamadas más pequeñas
y suponer que estas quedan resueltas.

Para que se entienda mejor a continuación se exponen algunos ejemplos:

➢ 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

Ing. Iván Hernández Hernández

Estructura de datos

2.2 Procedimientos recursivos

a) Secuencia Fibonacci:

La secuencia de Fibonacci es aquella secuencia de enteros donde cada elemento es la


suma de los dos anteriores.

0 1 2 3 4 5 6 7 8 ..... <--- fib

0,1 ,1 ,2 ,3 ,5 ,8 ,13 ,21 ,... ,

Definición Recursiva

if n == 0 or n == 1 entonces

fib(n) = n

if n >= 2 entonces

fib(n) = fib(n-2) + fib(n-1) //Llamadas recursivas

Algoritmo de la Secuencia Fibonacci

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

Ing. Iván Hernández Hernández

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

Se tienen tres torres y un conjunto de n discos de diferentes tamaños. Inicialmente los


discos están ordenados de mayor a menor en la primera torre. El problema consiste en
pasar los discos a la tercera torre utilizando la segunda como auxiliar.

Reglas:

1) En cada movimiento solo puede moverse un disco.

2) No puede quedar un disco mayor sobre uno menor.


INGENIERÍA EN SISTEMAS COMPUTACIONALES

Ing. Iván Hernández Hernández

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.

Algoritmo de las Torres de Hanoi

Procedimiento Hanoi(N,ORIGEN,AUXILIAR,DESTINO)

Si N=1 entonces

Escribir "Mover un Disco de",ORIGEN,"a",DESTINO

Si No

regresar Hanoi(N-1,ORIGEN,DESTINO,AUXILIAR) //Llamada recursiva

Escribir "Mover Disco de"ORIGEN,"a",DESTINO

regresar Hanoi(N-1,AUXILIAR,ORIGEN,DESTINO) //Llamada recursiva

Fin_Si

Fin_Procedimiento

2.3 Ejemplos de Casos Recursivos.

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

int fibo(int posicion)

{
INGENIERÍA EN SISTEMAS COMPUTACIONALES

Ing. Iván Hernández Hernández

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);

La siguiente figura muestra cuantas veces se llama a ejecución la función fibo(6)


INGENIERÍA EN SISTEMAS COMPUTACIONALES

Ing. Iván Hernández Hernández

Estructura de datos

La forma de recursividad usada para resolver Fibonacci es llamada Recursividad Múltiple


porque cada llamada a la función causa más de una llamada adicional.

Evite la Recursividad Múltiple ya que tiende a ser muy deficiente.

Compruébelo calculando Fibonacci mayor a 20 por ejemplo.

Ejecute los programas recursivo e iterativo para comprobarlo. La Recursividad Lineal no


es tan deficiente como la múltiple, ya que se le llama de esa manera porque cada llamada
solo causa una llamada más. Por ejemplo factorial ().

Hay otra clasificación que es no es tan importante desde el punto de vista de tiempo de
ejecución:

➢ Directa (también llamada Simple). Es la que corresponde a nuestros ejemplos.


Una función se llama a ejecución a sí misma.
➢ Indirecta (también llamada Compleja o Mutua). Una función se llama a ejecución
a través de otra, en forma directa o indirecta. Es decir, A→ B→A o A→B→C→A
causa una llamada más. Esta causa poca claridad en el código.
INGENIERÍA EN SISTEMAS COMPUTACIONALES

Ing. Iván Hernández Hernández

Estructura de datos

Bibliografía

P.J, D. (2008). Java Como Programar (Séptima). Pearson.

Aguilar, J.A(2008). Estructura de datos en Java (Primera). McGraw Hill

También podría gustarte