Lab01 - Recursión y Eficiencia Algorítmica
Lab01 - Recursión y Eficiencia Algorítmica
Lab01 - Recursión y Eficiencia Algorítmica
LABORATORIO Nº 2
CURSO : Análisis y diseño de algoritmos
TEMA : Recursión y eficiencia algorítmica
DURACIÓN ESTIMADA : 01:40 horas.
I. OBJETIVOS
El presente laboratorio tiene por objetivos:
Solucionar problemas mediante recursión y comparar su eficiencia con algoritmos recursivos.
II. ALGORITMOS RECURSIVOS
1. Solucione los siguientes problemas mediante algoritmos iterativos y con un contador analice
sus eficiencias:
a. Factorial de un número
{n >= 0}
función factorial (n: entero) retorna (fact: entero)
{fact = 1*2*3*4*…*n}
b. MCD de un número usando el algoritmo de Euclides
{n >= 0, m >= 0}
función máximoComúnDivisor (n,m:entero) retorna (mcd: entero)
{mcd es el máximo entero que divide a n y m}
c. El n-ésimo término Fibonacci (1, 1, 2, 3, 5, 8, 23, …)
{n >= 0}
función fibonacci(n:entero) retorna fib
{fib >= 1}
2. Mediante el uso de algoritmos recursivos solucione los siguientes problemas y mediante un
contador compare la eficiencia de cada uno con las soluciones iterativas:
a. Factorial de un número
{n >= 0}
función factorial (n: entero) retorna (fact: entero)
n = 0 => fact 1
n > 0 => fact n * factorial(n-1)
{ fact = 1*2*3*4*…*n }
b. MCD de un número usando el algoritmo de Euclides
{n >= 0, m >= 0}
función máximoComúnDivisor (n,m:entero) retorna (mcd: entero)
n = m => mcd n
n > m => mcd máximoComúnDivisor (n-m, m)
n < m => mcd máximoComúnDivisor (n, m-n)
{mcd es el máximo entero que divide a n y m}
c. El n-ésimo término Fibonacci (1, 1, 2, 3, 5, 8, 23, …)
{n >= 0}
función fibonacci(n: entero) retorna (fib: entero)
n <= 1=> fib n
n > 1 => fib fibonacci(n-1) + fibonacci(n-2)
{fib>=1}
3. Resuelva el problema de las torres de Hanoi mediante recursión.
respinozad@unmsm.edu.pe Pág. 1