Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Presenta:
Lorenzo Antonio Sinta Minquiz
Israel Xolo Pucheta
Cristian David Cobaxin Seba
Grupo 304-B
PRÁCTICA NO. 2
NOMBRE DE LA PRÁCTICA:
Análisis recursivo
OBJETIVO:
Analizar y comprender el funcionamiento de la recursividad de algoritmos
FUNDAMENTO TEÓRICO:
RECURSIVIDAD
Caso base: una solución simple para un caso particular (puede haber más de un caso
base).
INSTITUTO TECNOLÓGICO SUPERIOR DE SAN ANDRÉS
TUXTLA
COLA
En algunos algoritmos recursivos, se puede implementar un caso de recursividad especial
llamado Tail Recursión (recursividad por cola), la cual es una técnica para optimizar la
recursividad eliminando las constantes llamadas recursivas. Tail recursión es cuando la
llamada recursiva es la última instrucción de la función.
[2]L. J. Aguilar. Fundamentos de programación, estructura de datos y objetos. 4ta ed: Madrid:
McGRAW-HILL/INTERAMERICANA DE ESPAÑA, S. A. U.,2008
DIRECTA
En recursión directa el código del subprograma recursivo F contiene una sentencia que invoca
a F, mientras que en recursión indirecta el subprograma F invoca al subprograma G que invoca
a su vez al subprograma P, y así sucesivamente hasta que se invoca de nuevo al subprograma
F.
[2]L. J. Aguilar. Fundamentos de programación, estructura de datos y objetos. 4ta ed: Madrid:
McGRAW-HILL/INTERAMERICANA DE ESPAÑA, S. A. U.,2008
ANIDADA
En algunos de los argumentos de la llamada recursiva hay una nueva llamada a sí misma.
[2]L. J. Aguilar. Fundamentos de programación, estructura de datos y objetos. 4ta ed: Madrid:
McGRAW-HILL/INTERAMERICANA DE ESPAÑA, S. A. U.,2008
INDIRECTA
La recursividad indirecta se produce cuando un subprograma llama a otro, que eventualmente
terminará llamando de nuevo al primero.
[2]L. J. Aguilar. Fundamentos de programación, estructura de datos y objetos. 4ta ed: Madrid:
McGRAW-HILL/INTERAMERICANA DE ESPAÑA, S. A. U.,2008
INDIRECTA
El algoritmo recursivo llama a otro que provoca eventualmente una llamada al original.
EXCESIVA
INSTITUTO TECNOLÓGICO SUPERIOR DE SAN ANDRÉS
TUXTLA
DESARROLLO
El alumno desarrollará un programa en el que creará un TDA estático con un arreglo que
almacene el nombre, carrera, edad, promedio de varios alumnos y permita realizar búsquedas
por nombre, edad, promedio y carrera. Además creará un TDA dinámico que almacene una
lista de nombres y permita imprimir toda la lista. Con esto deberá identificar las diferencias
entre ambos tipos de TDA y comprenderá cómo emplearlas.
CODIGO:
RESULTADOS:
static int factorial(int num){
if(num==0) factorial(5)=120
return 1; 5*4*3*2*1
else
return num*factorial(num-1); 20 60 120 120
}
Prueba de escritorio
num Condición Llamada recursiva Resultados
5 Si 5==0 x 5*factorial(4) 24 * 5 = 120
4 Si 4==0 x 4*factorial(3) 6 * 4 = 24
3 Si 3==0 x 3*factorial(2) 2*3=6
2 2==0 x 2*factorial(1) 1*2=2
1 Si 1==0 x 1*factorial(0) 1*1=1
0 Si 0==0 1 1
INSTITUTO TECNOLÓGICO SUPERIOR DE SAN ANDRÉS
TUXTLA
if(n<2)
return n;
else
return fibonacci(n-1)+fibonacci(n-2);
}
Fibo (5)
3+2=5
INSTITUTO TECNOLÓGICO SUPERIOR DE SAN ANDRÉS
TUXTLA
CONCLUSIÓN:
La practica nos mostro que existen diferentes tipos de recursividad cada una de ellas tiene
sus ventajas en la programación
BIBLIOGRAFÍA:
Joyanes Aguilar, Luis (1996) Fundamentos de programación, Algoritmos y Estructura de datos. McGraw-Hill,
México.
[AHU88] A. Aho, J.E. Hopcroft, J. Ullman. Estructuras de datos y algoritmos. Addison-Wesley (1.988).