Descargar como pdf o txt
Descargar como pdf o txt
Está en la página 1de 6

II

Recursividad

2 Práctica 02: Recursividad . . . . . . . . . . . . 17


2.1 Ejercicio 1 - Los números Catalán
2.2 Ejercicio 2 - Función de Ackermann
2.3 Ejercicio 3 - Coeficientes binomiales
2.4 Entregables
2.5 Forma/Medio y fecha de entrega
2. Práctica 02: Recursividad

2.1 Ejercicio 1 - Los números Catalán


2.1.1 Descripción
Los números Catalan. Estos números se utilizan en una gran variedad de problemas de combi-
natoria. Tienen varias aplicaciones; por ejemplo, dados como n matrices, permiten encontrar el
número de formas en que se podrían multiplicar. Otra aplicación consiste en determinar el número
de formas en que un polígono con n + 2 lados se puede desomponer.

En combinatoria los números de Catalan forman una secuencia de números naturales que
aparece en varios problemas de conteo que habitualmente son recursivos. Obtienen su nombre del
matemático belga Eugéne Charles Catalan (1814-1894). El enésimo número de Catalan se obtiene
según la siguiente fórmula:
 
1 2n
Cn = con n ≥ 0 (2.1)
n+1 n

Los primeros números de Catalan siguiendo la fórmula recursiva son: 1, 1, 2, 5, 14, 42, 132,
429, 1430, . . . . El problema, sin embargo, representa la gran cantidad de llamadas recursivas que
se necesitan realizar para alcanzar estos resultados. Por ejemplo, si N=5 arrojaría como valor
el número 14, sería casi una centena de llamadas recursivas. Dada la expresión 2.1 crear un
programa en la versión iterativa y versión recursiva. Además debe de realizar la traza de llamadas
recursivas, para algún caso en particular.

2.2 Ejercicio 2 - Función de Ackermann


2.2.1 Descripción
Función de Ackermann. Debido a su definición, profundamente recursiva, la función de Acker-
mann se utiliza con frecuencia para comparar compiladores en cuanto a su habilidad para optimizar

ISC - M.C.C. Manuel Hernández Hernández Estructura de datos 17


18

la recursión. Dicha función se define como:



n + 1
 Si m = 0
Ackermann(m, n) = Ackermann(m − 1, 1) Si m > 0 y n = 0 (2.2)


Ackermann(m − 1, Ackermann(m, n − 1)) Si m > 0 y n > 0

Esta función, llamada función de Ackermann, es interesante porque crece rápidamente con
respecto a los valores de m y n. Dada la expresión 2.2 realizar lo siguiente:
• Implementar la función Ackermann en la versión iterativa y su versión recursiva en el lenguaje
de programación Java.
• Comprobar la función Ackermann implementada con los siguientes ejemplos:

PARÁMETROS-ENTRADA FUNCIÓN-ACKERMANN SALIDA


m=1 y n=2 Ackermann(1, 2) 4
m=3 y n=2 Ackermann(3, 2) 29

• Mediante un diagrama, muestre el proceso de ejecución con las llamadas recursivas para
Ackermann(1, 2). Con base al diagrama, responde la siguiente pregunta: ¿Cuántas lla-
madas recursivas se hacen cuando se evalua Ackermann(1, 2)?

2.3 Ejercicio 3 - Coeficientes binomiales


2.3.1 Descripción
Coeficientes binomiales. El triángulo de Pascal es un triángulo de números enteros, infinito y
simétrico cuyas diez primeras líneas se puede observar en la figura 2.1.

Figure 2.1: Ejemplo del Triángulo de Pascal

La fórmula que da el desarrollo de (a + b)2 según las potencias crecientes de a y decrecientes de


b se llama binomio de Newton. En esta expresión lo único que se desconoce son los coeficientes de
los monomios ak bn−k . La definición habitual de los coeficientes binomiales se expresa en términos
de factoriales, como se puede observar en la fórmula

n!
Cnk = (0 ≤ k ≤ n) (2.3)
k!(n − k)!

ISC - M.C.C. Manuel Hernández Hernández Estructura de datos 18


2.4 Entregables

Diseñar e implementar un algoritmo iterativo y otro recursivo en un lenguaje de programación


de su elección. Además construir mediante un diagrama la traza de las llamadas recursivas de algún
caso en particular.

2.4 Entregables

1. Programas

Puede entregar de las siguientes formas los programas:


• El proyecto creado de NetBeans o Eclipse con los archivos/clases .java
• ó en una carpeta con el nombre Práctica1 con los archivos/clases .java
• Si él programa utiliza interfaz gráfica de usuario entregar el proyecto creado con el
IDE (sea por ejemplo netbeans o eclipse).

Al inicio de cada clase (archivo .java) debe agregar la siguiente información:

/**
* Nombre de la institución: ITSTA
* Carrera: Ingeniería en Sistemas Computacionales
* Asignatura: Estructura de datos
* Unidad No.: 2
* Práctica No.: 2
* No. de equipo:
* Nombres de los integrantes:
* Fecha de entrega:
* Objetivo / Descripción del problema:
*
*/

// A partir de aquí va todo el código del programa que resuelve


// el ejercicio de la práctica

ISC - M.C.C. Manuel Hernández Hernández Estructura de datos 19


20

2. Reporte - Entregar el reporte con las siguientes características:

Numenclatura para nombre del archivo


• Numenclatura:
ISC_ED_U2_Práctica2_Recursividad_Reporte_EQN
• Por ejemplo:
ISC_ED_U2_Práctica2_Recursividad_Reporte_EQ2.pdf
Estructura del reporte
• Portada (Logo y Nombre de la institución, Logo y Nombre de la Carrera, Asignatura, Nombre del docente: M.C.C.
Manuel Hernández Hernández, Número y Nombre de la práctica: Práctica 2 - Recursividad, Número de equipo,
Integrantes del equipo, Grupo y Fecha de entrega)
• Índice de contenido
• Índice de figuras
1. Ejercicio 1: Los números Catalán
1.1. Descripción del problema
1.2. Algoritmo iterativo
1.3. Algoritmo recursivo
1.4. Traza del cálculo del algoritmo recursivo (Debe responder la pregunta: ¿Cuántas llamadas recursivas se hacen
cuando se evalúan con los datos de entrada del algoritmo probados?)
1.5. Resultados (Capturas de pantalla de la ejecución del programa iterativo y recursivo - Al menos tres casos)
1.5.1. Ejecución del programa iterativo
1.5.2. Ejecución del programa recursivo
2. Ejercicio 2: Función de Ackermann
2.1. Descripción del problema
2.2. Algoritmo iterativo
2.3. Algoritmo recursivo
2.4. Traza del cálculo del algoritmo recursivo (Debe responder la pregunta: ¿Cuántas llamadas recursivas se hacen
cuando se evalúan con los datos de entrada del algoritmo probados?)
2.5. Resultados (Capturas de pantalla de la ejecución del programa iterativo y recursivo - Al menos tres casos)
2.5.1. Ejecución del programa iterativo
2.5.2. Ejecución del programa recursivo
3. Ejercicio 3: Coeficientes binomiales
3.1. Descripción del problema
3.2. Algoritmo iterativo
3.3. Algoritmo recursivo
3.4. Traza del cálculo del algoritmo recursivo (Debe responder la pregunta: ¿Cuántas llamadas recursivas se hacen
cuando se evalúan con los datos de entrada del algoritmo probados?)
3.5. Resultados (Capturas de pantalla de la ejecución del programa iterativo y recursivo - Al menos tres casos)
3.5.1. Ejecución del programa iterativo
3.5.2. Ejecución del programa recursivo
4. Conclusiones. En las conclusiones responda las siguientes preguntas:
– ¿Que sucede con el resultado que arroja el algoritmo si utiliza valores mayores a 10 en los datos de entrada?
– Para el caso de los programas recursivos: ¿se llega a llenar la pila?, ¿cuáles de ellos lo hacen?, ¿Por qué?,
¿Existe alguna manera de resolverlo?, ¿Cómo resolvería el problema?
– ¿Cual de todos le fue más difícil de implementar, qué versión(es) y por qué?
– Mencione las dificultades que se presentaron al implementar los algoritmos.
– ¿Cuál de las dos versiones (iterativa y recursiva) implementadas es mejor y por qué?
– ¿Se pueden mejorar los algoritmo propuestos?, si es el caso, ¿Qué mejoras podría hacer en cada versión de
los algoritmos diseñados para resolver los problemas?

ISC - M.C.C. Manuel Hernández Hernández Estructura de datos 20


2.5 Forma/Medio y fecha de entrega

3. Vídeo
Grabar un vídeo corto (Mínimo 5 minutos y máximo 10 minutos) con la ejecución y
explicación del/los programa(s) de la práctica. Recomendación: Agregar al principio del
vídeo una portada con sus datos.
Numenclatura para nombre del archivo de vídeo
• Numenclatura:
ISC_ED_U2_Práctica2_Recursividad_Vídeo_EQN.mp4
• Por ejemplo:
ISC_ED_U2_Práctica2_Recursividad_Vídeo_EQ2.mp4

2.5 Forma/Medio y fecha de entrega


Medio de entrega

Subir los entregables de la práctica 2 en la plataforma Google ClassRoom

Fecha límite de entrega

Lunes 11 de septiembre de 2023 antes de las 11:59pm

ISC - M.C.C. Manuel Hernández Hernández Estructura de datos 21

También podría gustarte