Está en la página 1de 40

CS1111 – Programación 1

Laboratorio - Sesión 11B

Laboratorio

Profesor:
Profesores:
De Teoría: De Laboratorio:

Jesus Edwin Bellido Angulo


María Hilda Bermejo Ríos
Alan Victor Raul Morante Ponce
Boris Chullo Llave
Sebastian Coronado Alvarado
Jaime Moshe Farfán Madariaga
Henry Giovanny Gallegos Velgara
Vicente Machaca Arceda
Diego Ignacio Montalvo Molina
Alan Victor Raul Morante Ponce
Patricio Morriberón Cornejo
Fernando Augusto Nuñez Calderon
José Carlos Pazos Ortiz
Programación 1

12 Unidad 12:
Recursividad
Programación 1

Logros de la Sesión

Al finalizar esta sesión, estarás en la capacidad de:

• Entender y aplicar el concepto de recursividad.


• Resolver problemas y elaborar programas en Python
implementando algoritmos recursivos.
Programación 1

¿Qué es recursividad?

• Un algoritmo es recursivo cuando en su definición se


hace referencia al mismo algoritmo.
• Una función es recursiva cuando en su definición se
llama a sí misma.
Programación 1

Recursividad
• Simple. Cuando en la definición de la función sólo se
llama a si misma una vez.
• Múltiple. Cuando en la definición de la función se realiza
mas de una llamada a si misma.
• Directa. Cuando la función se llama a si misma (simple o
múltiple).
• Indirecta. Cuando la función llama a otra función que, a
su vez, llama a la función original.
Programación 1

Algoritmo recursivo
Programación 1

Algoritmo recursivo
Factorial (Iterativo): Factorial (Recursivo):
Programación 1

Condición base
• Para evitar una recursión infinita siempre se debe
considerar (al menos) una condición base.

• La condición base es el caso particular de la definición


recursiva de la que se conoce el resultado, por lo tanto,
no es necesario seguir invocando la recursión.

• Caso contrario:
Programación 1

Algoritmo recursivo
Factorial (Recursivo): Diagrama de la pila

__main__
Programación 1

Algoritmo recursivo
Factorial (Recursivo): Diagrama de la pila

__main__

factorialR n = 5
Programación 1

Algoritmo recursivo
Factorial (Recursivo): Diagrama de la pila

__main__

factorialR n = 5

factorialR n = 4
Programación 1

Algoritmo recursivo
Factorial (Recursivo): Diagrama de la pila

__main__

factorialR n = 5

factorialR n = 4

factorialR n = 3
Programación 1

Algoritmo recursivo
Factorial (Recursivo): Diagrama de la pila

__main__

factorialR n = 5

factorialR n = 4

factorialR n = 3

factorialR n = 2
Programación 1

Algoritmo recursivo
Factorial (Recursivo): Diagrama de la pila

__main__

factorialR n = 5

factorialR n = 4

factorialR n = 3

factorialR n = 2

factorialR n = 1
Programación 1

Algoritmo recursivo
Factorial (Recursivo): Diagrama de la pila

__main__

factorialR n = 5

factorialR n = 4

factorialR n = 3

factorialR n = 2

factorialR n = 1

factorialR n = 0
Programación 1

Algoritmo recursivo
Factorial (Recursivo): Diagrama de la pila

__main__

factorialR n = 5

factorialR n = 4

factorialR n = 3

factorialR n = 2

factorialR n = 1

1 factorialR n = 0
Programación 1

Algoritmo recursivo
Factorial (Recursivo): Diagrama de la pila

__main__

factorialR n = 5

factorialR n = 4

factorialR n = 3

factorialR n = 2

1 factorialR n = 1
Programación 1

Algoritmo recursivo
Factorial (Recursivo): Diagrama de la pila

__main__

factorialR n = 5

factorialR n = 4

factorialR n = 3

2 factorialR n = 2
Programación 1

Algoritmo recursivo

Factorial (Recursivo): Diagrama de la pila

__main__

factorialR n = 5

factorialR n = 4

6 factorialR n = 3
Programación 1

Algoritmo recursivo
Factorial (Recursivo): Diagrama de la pila

__main__

factorialR n = 5

24 factorialR n = 4
Programación 1

Algoritmo recursivo
Factorial (Recursivo): Diagrama de la pila

__main__

120 factorialR n = 5
Programación 1

Algoritmo recursivo
Factorial (Recursivo): Diagrama de la pila

__main__
Programación 1

Algoritmo recursivo
Factorial (Recursivo):
Programación 1

Algoritmo recursivo: Fibonacci


Programación 1

Algoritmo recursivo: Fibonacci


Iterativo: Recursivo:
Programación 1

Resolver problemas con recursividad


Se puede plantear una solución recursiva si:

• Un problema se puede plantear en función de uno o más


subproblemas idénticos en naturaleza al problema original,
pero menores en tamaño.
• Uno o más subproblemas tienen solución directa conocida
(casos base).
• La solución de los problemas más simples se utiliza para
construir la solución al problema inicial.
Programación 1

Ejemplo: Suma de dos números naturales


Elabore e implemente en Python un algoritmo recursivo
para calcular la suma de dos números naturales a y b.
Programación 1

Ejemplo: Suma de dos números naturales


Programación 1

Ejemplo: Suma de dos números naturales


Programación 1

Ejemplo: Palíndrome
Elabore e implemente en Python un algoritmo recursivo
para determinar si un string s es palíndrome.
Programación 1

Ejemplo: Palíndrome
Programación 1

Ejemplo: Palíndrome
Elabore e implemente en Python un algoritmo recursivo
para determinar si un string s es palíndrome.
Programación 1

Ejemplo: Hallar el máximo de una lista


Elabore e implemente en Python un algoritmo recursivo
para el máximo de una lista.
Programación 1

Ejemplo: Hallar el máximo de una lista


Programación 1

Ejemplo: Hallar el máximo de una lista


Elabore e implemente en Python un algoritmo recursivo
para el máximo de una lista.
Programación 1

Ejercicios:
Elabore e implemente en Python un algoritmo recursivo que:

1. Calcule la multiplicación de dos números naturales.


2. Calcule la potencia de un número: a elevado a la b (a,b
naturales).
3. Calcule la suma de dígitos de un número entero.
4. Calcule la sumatoria de los cuadrados desde 1 hasta n.
5. Calcule el inverso de un string.
6. Realice una cuenta regresiva desde n hasta 0 e imprima la
secuencia del conteo.
Programación 1

Evaluación
• ¿Qué es una función recursiva?
• ¿Cuándo utilizo una función recursiva?
• ¿Qué es la condición o caso base?
• ¿Cuántas condiciones o casos bases debe tener una función
recursiva?
Programación 1

Cierre
En esta sesión aprendiste:

• Comprender la recursividad.
• Solucionar problemas y desarrollar programas en Python
usando funciones recursivas.
Gracias
Nos vemos en la siguiente clase!

También podría gustarte