Está en la página 1de 11

UNIVERSIDAD DEL NORTE

ALGORITMIA Y PROGRAMACIÓN II _ 202030


TALLER RECURSIVIDAD COMO PREPARACIÓN PARA EXAMEN FINAL
DANIEL ANDRES OLIVARES – JUAN PABLO PEREZ PINEDA

1. Realizar la prueba de escritorio a la siguiente función recursiva con los valores 21 y 35 para
a y b respectivamente.  Realizar paso a paso y decir que hace.

Entero Función Misterio (Entero a, Entero b) 


Si (b = 0) entonces
Retornar a
Sino
Si (a = 0) entonces
Retornar b
Sino
Si (a >= b) entonces
Retornar Misterio (a - b, b)
Sino
Retornar Misterio (a, b - a)
Fin Si
Fin Si
Fin Si
Fin Misterio

2. Diseñar un algoritmo que por medio de un subalgoritmo RECURSIVO calcule el promedio


de los elementos pares del vector.

3. Realice el siguiente procedimiento recursivo:


Calcular C(n,k), los coeficientes binomiales recursivamente, siendo:
1. C(n,0)=C(n,n)=1 si n>=0
2. C(n,k)=C(n-1,k)+C(n-1,k-1) si n>k>0
Construir la pila de recursividad para C(6,4).

4. Hacer un procedimiento RECURSIVO que muestre cuántas veces aparece el elemento


elem en un vector de tamaño N. 

Ejemplo:    A = [4, 7,12 ,4 ,8 ,12 ,4 ,5 ,8] Si elem es el número 4 la respuesta es 3 veces.


Punto #1.

Primera iteración:

Entero Función Misterio (Entero a, Entero b) 


a<-21
b<-35
Si (35 = 0) entonces
Retornar a
Sino
Si (21 = 0) entonces
Retornar b
Sino
Si (21 >= 35) entonces
Retornar Misterio (a - b, b) (no se cumple)
Sino
Retornar Misterio (a, b - a)
Retornar Misterio (21, 35 - 21)
Retornar Misterio (21, 14)
Fin Si
Fin Si
Fin Si

Segunda Iteración:
a<-21
b<-14
Si (21 = 0) entonces
Retornar a
Sino
Si (14 = 0) entonces
Retornar b
Sino
Si (21 >= 14) entonces
Retornar Misterio (a - b, b)
Retornar Misterio (21- 14, 14)
Retornar Misterio (7, 14)
Sino
Retornar Misterio (a, b - a) (no se cumple)
Fin Si
Fin Si
Fin Si
Tercera Iteración:
a<-7
b<-14
Si (7 = 0) entonces
Retornar a
Sino
Si (14 = 0) entonces
Retornar b
Sino
Si (7 >= 14) entonces
Retornar Misterio (a - b, b) (no se cumple)
Sino
Retornar Misterio (a, b - a)
Retornar Misterio (7, 14 - 7)
Retornar Misterio (7, 7)
Fin Si
Fin Si
Fin Si

Cuarta Iteración:
a<-7
b<-7
Si (7 = 0) entonces
Retornar a
Sino
Si (7 = 0) entonces
Retornar b
Sino
Si (7 >= 7) entonces
Retornar Misterio (a - b, b)
Retornar Misterio (7- 7, 7)
Retornar Misterio (0, 7)

Sino
Retornar Misterio (a, b - a)
Fin Si
Fin Si
Fin Si
Quinta Iteración:
a<-0
b<-7
Si (b = 0) entonces
Retornar a
Sino
Si (a = 0) entonces
Retornar b
Retornar 7
Sino
Si (7 >= 7) entonces
Retornar Misterio (a - b, b)
Sino
Retornar Misterio (a, b - a)
Fin Si
Fin Si
Fin Si

FinMisterio
Valor de retorno<-7

Rpta. El objetivo que tiene esta función recursiva es calcular el MCD (Máximo Común Divisor)

Punto #2.
Entero Función PromedioPares (Entero n, Entero v [])
Si (n<0) Entonces
Retornar 0
Sino
Si v[n]MOD(2) = 0 entonces
S<- s + v[n]
c<- c + 1
Retornar PromedioPares(n-1, v)
Sino
Retornar PromedioPares(n-1, v)
FinSi
FinSi

Si (n=0) entonces
prom<-s/c
Retornar prom
FinSi

FinPromedioPares
Punto #3.

Entero Función Binomial (Entero n, Entero k)


Si (n>=0) entonces
Si (k=n ||k=0) entonces
Retornar 1
FinSi
FinSi
Si (n>k && k>0) entonces
Retornar Binomial (n-1, k) + Binomial (n-1, k-1)
FinSi
FinBinomial

Pila recursiva:
ÇPunto #4.

Entero Función Contar (Entero n, Entero vect [], Entero k) 


Si (n < 0) entonces
Retornar 0
Sino
Si (vect[n] = k) entonces
Retornar 1 + contar (n-1, vect, k)
Sino
Retornar contar (n-1, vect, k)
Fin Si
Fin Si
Fin Contar

Primera Iteración:
A = [4, 7,12 ,4 ,8 ,12 ,4 ,5 ,8]
k=4
n=9
Entero Función Contar (Entero n, Entero vect [], Entero k) 
Si (9 < 0) entonces
Retornar 0 (no se cumple)
Sino
Si (vect[9] = 4) entonces
Retornar 1 + contar (n-1, vect, k) (no se cumple)
Sino
Retornar contar (n-1, vect, k)
Retornar contar (9-1, vect, 4)
Retornar contar (8, vect, 4)
Fin Si
Fin Si
Fin Contar
Segunda Iteración:
A = [4, 7,12 ,4 ,8 ,12 ,4 ,5 ,8]
k=4
n=8
Entero Función Contar (Entero n, Entero vect [], Entero k) 
Si (8 < 0) entonces
Retornar 0 (no se cumple)
Sino
Si (vect[8] = 4) entonces
Retornar 1 + contar (n-1, vect, k) (no se cumple)
Sino
Retornar contar (n-1, vect, k)
Retornar contar (8-1, vect, 4)
Retornar contar (7, vect, 4)
Fin Si
Fin Si
Fin Contar

Tercera Iteración:
A = [4, 7,12 ,4 ,8 ,12 ,4 ,5 ,8]
k=4
n=7
Entero Función Contar (Entero n, Entero vect [], Entero k) 
Si (7 < 0) entonces
Retornar 0 (no se cumple)
Sino
Si (vect[7] = 4) entonces
Retornar 1 + contar (n-1, vect, k)
Retornar 1 + contar (7-1, vect, 4)
Retornar 1 + contar (6, vect, 4)
Sino
Retornar contar (n-1, vect, k) (no se cumple)
Fin Si
Fin Si
Fin Contar
Cuarta Iteración:
A = [4, 7,12 ,4 ,8 ,12 ,4 ,5 ,8]
k=4
n=6
Entero Función Contar (Entero n, Entero vect [], Entero k) 
Si (6 < 0) entonces
Retornar 0 (no se cumple)
Sino
Si (vect[6] = 4) entonces
Retornar 1 + contar (n-1, vect, k) (no se cumple)
Sino
Retornar contar (n-1, vect, k)
Retornar contar (6-1, vect, 4)
Retornar contar (5, vect, 4)
Fin Si
Fin Si
Fin Contar

Quinta Iteración:
A = [4, 7,12 ,4 ,8 ,12 ,4 ,5 ,8]
k=4
n=5
Entero Función Contar (Entero n, Entero vect [], Entero k) 
Si (5 < 0) entonces
Retornar 0 (no se cumple)
Sino
Si (vect[5] = 4) entonces
Retornar 1 + contar (n-1, vect, k) (no se cumple)
Sino
Retornar contar (n-1, vect, k)
Retornar contar (5-1, vect, 4)
Retornar contar (4, vect, 4)
Fin Si
Fin Si
Fin Contar
Sexta Iteración:
A = [4, 7,12 ,4 ,8 ,12 ,4 ,5 ,8]
k=4
n=4
Entero Función Contar (Entero n, Entero vect [], Entero k) 
Si (4 < 0) entonces
Retornar 0 (no se cumple)
Sino
Si (vect[4] = 4) entonces
Retornar 1 + contar (n-1, vect, k)
Retornar 1 + contar (4-1, vect, 4)
Retornar 1 + contar (3, vect, 4)
Sino
Retornar contar (n-1, vect, k) (no se cumple)
Fin Si
Fin Si
Fin Contar

Séptima Iteración:
A = [4, 7,12 ,4 ,8 ,12 ,4 ,5 ,8]
k=4
n=3
Entero Función Contar (Entero n, Entero vect [], Entero k) 
Si (3 < 0) entonces
Retornar 0 (no se cumple)
Sino
Si (vect[3] = 4) entonces
Retornar 1 + contar (n-1, vect, k) (no se cumple)
Sino
Retornar contar (n-1, vect, k)
Retornar contar (3-1, vect, 4)
Retornar contar (2, vect, 4)
Fin Si
Fin Si
Fin Contar
Octava Iteración:
A = [4, 7,12 ,4 ,8 ,12 ,4 ,5 ,8]
k=4
n=2
Entero Función Contar (Entero n, Entero vect [], Entero k) 
Si (2 < 0) entonces
Retornar 0 (no se cumple)
Sino
Si (vect[2] = 4) entonces
Retornar 1 + contar (n-1, vect, k) (no se cumple)
Sino
Retornar contar (n-1, vect, k)
Retornar contar (2-1, vect, 4)
Retornar contar (1, vect, 4)
Fin Si
Fin Si
Fin Contar

Novena Iteración:
A = [4, 7,12 ,4 ,8 ,12 ,4 ,5 ,8]
k=4
n=1
Entero Función Contar (Entero n, Entero vect [], Entero k) 
Si (1 < 0) entonces
Retornar 0 (no se cumple)
Sino
Si (vect[1] = 4) entonces
Retornar 1 + contar (n-1, vect, k)
Retornar 1 + contar (1-1, vect, 4)
Retornar 1 + contar (0, vect, 4)
Sino
Retornar contar (n-1, vect, k) (no se cumple)
Fin Si
Fin Si
Fin Contar
Valor retornado<- 3

También podría gustarte