SlideShare una empresa de Scribd logo
1 de 28
Lester Sánchez Díaz
Universidad de La Habana
Recursión (Recursividad)
Procedimiento de resolver un problema complejo
reduciéndolo en uno o más subproblemas
1. Con la misma estructura que el problema original
2. Más simples de resolver que el problema original
A su vez cada subproblema se divide, usando el
mismo procedimiento, en subproblemas aún más
simples
Los subproblemas llegarán a ser tan simples que no
hará falta dividirlos para resolverlos
La solución del problema inicial se obtiene
combinando las soluciones de cada subproblema
Programación, UH 2013-2014

2
Recursividad en la vida cotidiana
• Recorrer un trayecto de un origen a un destino
‐ Dar un paso desde el origen hacia el destino
‐ Dar (n-1) pasos hacia el destino desde el nuevo origen

• Subir una escalera
‐ Subir un escalón
‐ Subir los (n-1) escalones restantes

• Comerse una pizza (o cualquier otra cosa)
‐ Comerse una porción
‐ Comerse las (n-1) porciones restantes
Programación, UH 2013-2014

3
Recursividad en la vida cotidiana
Distribuir productos que se importan al país para la
venta a la población en la red minorista de mercados
Ejemplo: Distribuir 1000 toneladas de arroz para
1000 mercados (1 tonelada para cada uno)
Distribuir directamente desde el puerto a los mercados no resulta práctico

• Dividir el total en partes según la cantidad de provincias
• Enviar a cada provincia una parte, y que cada provincia se
encargue de la distribución de su parte
• A su vez, cada provincia divide su parte y envía nuevas
porciones a sus municipios
• Luego cada municipio vuelve a dividir su parte y la
distribuye a cada mercado minorista
Programación, UH 2013-2014

4
Problema de distribución de
mercancía
PAIS

1000 ton

100 ton

2

1

...

10

PROVINCIA

MUNICIPIO

10 ton
1 ton

...

2

1

...
1

1

10

10

MERCADO

Los subproblemas son cada vez más pequeños, y llega un
momento en que no hace falta dividirlos para resolverlos
Programación, UH 2013-2014

5
Estructura general de un algoritmo
recursivo
Algoritmo RECURSIVO
IF (Problema Simple)

Condición
de Parada

Caso Base

Resolverlo directamente
ELSE

Resolver de
manera
recursiva

Dividir en subproblemas P1, P2, ..., Pn
Resolver(P1); Resolver(P2); ... Resolver(Pn)
Combinar las soluciones de cada subproblema

Programación, UH 2013-2014

6
Programación, UH 2013-2014

7
Algoritmo para guardar las Matrioskas
CASO BASE
SUBPROBLEMA

6

5

4

1 Matrioska
Guardar n-1
Matrioskas

3 2 1

Guardar Matrioskas (n)
IF (n > 1)
Abrir Matrioska n

Subproblema

Guardar Matrioskas (n-1)
Colocar n-1 dentro de n
Cerrar Matrioska n

Programación, UH 2013-2014

8
Ejemplo: Factorial
Caso Base

1, n = 0
FACT(n)

Definición
Recursiva
de Factorial

n * FACT(n-1) , n > 0

FACT(5) = 1 * 2 * 3 * 4 * 5 = 120
FACT(5) = 5 * FACT(4)

5*4*3*2*1*1
4*3*2*1*1

4 * FACT(3)

3*2*1*1

3 * FACT(2)
División en
subproblemas

2 * FACT(1)
1 * FACT(0)

Programación, UH 2013-2014

120

1

Solución del
problema original

2*1*1
1*1

Combinar
soluciones de los
subproblemas

9
Ejemplo: Factorial
Iterativo

Recursivo

Caso Base

Subproblema
Programación, UH 2013-2014

Converge al
caso base

10
Torres de Hanoi
Tenemos en una estaca una pila de discos de mayor a menor y queremos
pasarlos a la tercera estaca usando la del medio como auxiliar, pero solo
se puede mover un disco a la vez y nunca se puede poner un disco de
mayor tamaño sobre uno menor
ORIGEN

AUXILIAR

DESTINO

¿Cómo mover cualquier cantidad de discos?

Programación, UH 2013-2014

11
Torres de Hanoi
CASO BASE
Mover 1 disco de ORIGEN a DESTINO

ORIGEN

Programación, UH 2013-2014

AUXILIAR

DESTINO

12
Torres de Hanoi
SUBPROBLEMA
Si la cantidad de discos es mayor que 1
1. Mover (n-1) discos de ORIGEN a AUXILIAR
2. Mover el disco que queda en ORIGEN para DESTINO
3. Mover los (n-1) de AUXILIAR a DESTINO

Programación, UH 2013-2014

13
Torres de Hanoi
ORIGEN

AUXILIAR

DESTINO

Subproblema

Caso Base

Programación, UH 2013-2014

Subproblema

14
Torres de Hanoi
Caso Base de la recursión

Converge al caso base

Converge al caso base

Programación, UH 2013-2014

15
DEMO
Torres de Hanoi

Intente hacerlo sin recursividad

Programación, UH 2013-2014

16
Fractales: Copo de Nieve

Construcción de un fractal con forma de Copo de Nieve

Figura que a distintas escalas presenta la misma forma geométrica
Programación, UH 2013-2014

17
Fractales: Triángulo de Sierpinski

Programación, UH 2013-2014

18
Ejemplo: Fractales

Programación, UH 2013-2014

19
Ejemplo: Fractales

Caso Base

Resolver
subproblema

Programación, UH 2013-2014

20
DEMO
Fractales

Programación, UH 2013-2014

21
Ejemplo: Fibonacci
FIB(n)

0,
n=0
1,
n=1
FIB(n-1) + FIB(n-2),

Fib(5)
Fib(4)
Fib(3)
Fib(2)

n>1

Fib(1)

Fib(0)
Fib(1)

0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, …
FIB(5) = FIB(4) + FIB(3)

Fib(2)
Fib(1)

Se repite el cálculo
innecesariamente

Fib(0)
Fib(3)

Converge al
caso base

Fib(2)

Fib(1)

Converge al caso base
Intente buscar el término 50 con este algoritmo y vea
cuánto UH 2013-2014
Programación,demora. Pruebe con la variante interativa.

Fib(0)
Fib(1)
Fib(2)
Fib(1)
Fib(0)
Reglas para aplicar la
Recursividad
1. Descomponer el problema original en
subproblemas más simples del mismo tipo
2. Resolver los subproblemas, usando el mismo
método, y combinar sus soluciones para
generar la solución del problema original
3. La subdivisión en subproblemas siempre debe
converger a un caso base que se pueda
resolver sin necesidad de subdividir
Confiar en la recursividad!
Programación, UH 2013-2014

24
Programación, UH 2013-2014

25
Clase Práctica
Calcular una base elevada a una potencia
2^3 = 2 * 2 * 2 = 8
6^4 = 6 * 6 * 6 * 6 = 1296
long Potencia(int base, int exponente)
Multiplicar dos números sin utilizar el operador *
21 * 3 = 21 + 21 + 21 = 63
2 * 24 = 24 + 24 = 48
Su solución debe hacer el menor número posible de llamados
recursivos
long Producto(int a, int b)

Programación, UH 2013-2014

26
Clase Práctica
Determinar si un número es SuperPrimo.
Un número SuperPrimo si es primo y además al quitarle la
última cifra sigue siendo SuperPrimo. Un número primo de
una cifra se considera SuperPrimo.
bool EsSuperPrimo(int n)
Implemente un método que determine si una cadena es
palíndromo
bool EsPalindromo(string s)

Programación, UH 2013-2014

27
Clase Práctica
Implemente un método int TerminoWirth(int n) que
devuelva el término n-ésimo perteneciente al conjunto de
Wirth.

Conjunto de Wirth (W)
1 W
Si x

W

Programación, UH 2013-2014

2x + 1
3x + 1

W
W

28
Clase Práctica (Lab)
Programe un método que permita al usuario escribir en la
Consola tantas líneas como quiera. Cuando el usuario de
“ENTER” sin haber escrito algún texto, debe imprimir cada
una de las líneas que escribió el usuario, pero en orden
inverso.
No debe usar ninguna estructura de datos para almacenar
todas las líneas que escribe el ususario.

Modifique el ejemplo de fractales visto en la clase para
generar el Triángulo de Sierpinski.
Programe un algoritmo para generar un fractal con forma de
copo de nieve.
Programación, UH 2013-2014

29

Más contenido relacionado

La actualidad más candente

Cuadro sinóptico estructuras de datos y su clasificación
Cuadro sinóptico   estructuras de datos y su clasificaciónCuadro sinóptico   estructuras de datos y su clasificación
Cuadro sinóptico estructuras de datos y su clasificaciónAlex Uhu Colli
 
Reporte metodos de busqueda y ordenamiento
Reporte metodos de busqueda y ordenamientoReporte metodos de busqueda y ordenamiento
Reporte metodos de busqueda y ordenamientoTAtiizz Villalobos
 
Estructura de Datos - Unidad 5 metodos de ordenamiento
Estructura de Datos - Unidad 5 metodos de ordenamientoEstructura de Datos - Unidad 5 metodos de ordenamiento
Estructura de Datos - Unidad 5 metodos de ordenamientoJosé Antonio Sandoval Acosta
 
Trabajo, Modelos de Transporte y Optimización de Redes
Trabajo, Modelos de Transporte y Optimización de RedesTrabajo, Modelos de Transporte y Optimización de Redes
Trabajo, Modelos de Transporte y Optimización de RedesRonald Alexander Medina Pinto
 
Ejercicios resueltos grafos
Ejercicios resueltos grafosEjercicios resueltos grafos
Ejercicios resueltos grafosTERE FERNÁNDEZ
 
Busqueda Binaria
Busqueda BinariaBusqueda Binaria
Busqueda BinariaITCV
 
Estructura de Datos Unidad - V: Métodos de Ordenamiento
Estructura de Datos Unidad - V: Métodos de OrdenamientoEstructura de Datos Unidad - V: Métodos de Ordenamiento
Estructura de Datos Unidad - V: Métodos de OrdenamientoJosé Antonio Sandoval Acosta
 
Unidad III generacion de variables aleatorias
Unidad III generacion de variables aleatoriasUnidad III generacion de variables aleatorias
Unidad III generacion de variables aleatoriasAnel Sosa
 
ORDENAMIENTO POR INTERCAMBIO
ORDENAMIENTO POR INTERCAMBIOORDENAMIENTO POR INTERCAMBIO
ORDENAMIENTO POR INTERCAMBIOWilmer Quintero
 
Recursividad (Divide y Vencerás)
Recursividad (Divide y Vencerás)Recursividad (Divide y Vencerás)
Recursividad (Divide y Vencerás)Lester Sanchez
 
Recursividad
RecursividadRecursividad
Recursividadbetzy
 
Lenguajes regulares
Lenguajes regularesLenguajes regulares
Lenguajes regularesKenia Adams
 
Unidad 4-generacion-de-numeros-pseudoaleatorios1
Unidad 4-generacion-de-numeros-pseudoaleatorios1Unidad 4-generacion-de-numeros-pseudoaleatorios1
Unidad 4-generacion-de-numeros-pseudoaleatorios1Juan Carlos Martinez Garcia
 
Ejercicios resueltos de maximización: de método simplex
Ejercicios resueltos de maximización: de método simplexEjercicios resueltos de maximización: de método simplex
Ejercicios resueltos de maximización: de método simplexJuanMiguelCustodioMo
 

La actualidad más candente (20)

Cuadro sinóptico estructuras de datos y su clasificación
Cuadro sinóptico   estructuras de datos y su clasificaciónCuadro sinóptico   estructuras de datos y su clasificación
Cuadro sinóptico estructuras de datos y su clasificación
 
Reporte metodos de busqueda y ordenamiento
Reporte metodos de busqueda y ordenamientoReporte metodos de busqueda y ordenamiento
Reporte metodos de busqueda y ordenamiento
 
Modelo de redes
Modelo de redes Modelo de redes
Modelo de redes
 
Estructura de Datos - Unidad 5 metodos de ordenamiento
Estructura de Datos - Unidad 5 metodos de ordenamientoEstructura de Datos - Unidad 5 metodos de ordenamiento
Estructura de Datos - Unidad 5 metodos de ordenamiento
 
Trabajo, Modelos de Transporte y Optimización de Redes
Trabajo, Modelos de Transporte y Optimización de RedesTrabajo, Modelos de Transporte y Optimización de Redes
Trabajo, Modelos de Transporte y Optimización de Redes
 
Ejercicios resueltos grafos
Ejercicios resueltos grafosEjercicios resueltos grafos
Ejercicios resueltos grafos
 
Busqueda Binaria
Busqueda BinariaBusqueda Binaria
Busqueda Binaria
 
Estructura de Datos Unidad - V: Métodos de Ordenamiento
Estructura de Datos Unidad - V: Métodos de OrdenamientoEstructura de Datos Unidad - V: Métodos de Ordenamiento
Estructura de Datos Unidad - V: Métodos de Ordenamiento
 
Unidad III generacion de variables aleatorias
Unidad III generacion de variables aleatoriasUnidad III generacion de variables aleatorias
Unidad III generacion de variables aleatorias
 
Ejercicios
EjerciciosEjercicios
Ejercicios
 
ORDENAMIENTO POR INTERCAMBIO
ORDENAMIENTO POR INTERCAMBIOORDENAMIENTO POR INTERCAMBIO
ORDENAMIENTO POR INTERCAMBIO
 
Recursividad
RecursividadRecursividad
Recursividad
 
Estructura de Datos - Unidad 6 Metodos de busqueda
Estructura de Datos - Unidad 6 Metodos de busquedaEstructura de Datos - Unidad 6 Metodos de busqueda
Estructura de Datos - Unidad 6 Metodos de busqueda
 
Recursividad (Divide y Vencerás)
Recursividad (Divide y Vencerás)Recursividad (Divide y Vencerás)
Recursividad (Divide y Vencerás)
 
Recursividad
RecursividadRecursividad
Recursividad
 
Lenguajes regulares
Lenguajes regularesLenguajes regulares
Lenguajes regulares
 
Cadenas de markov
Cadenas de markovCadenas de markov
Cadenas de markov
 
Unidad 4-generacion-de-numeros-pseudoaleatorios1
Unidad 4-generacion-de-numeros-pseudoaleatorios1Unidad 4-generacion-de-numeros-pseudoaleatorios1
Unidad 4-generacion-de-numeros-pseudoaleatorios1
 
Método gráfico
Método gráficoMétodo gráfico
Método gráfico
 
Ejercicios resueltos de maximización: de método simplex
Ejercicios resueltos de maximización: de método simplexEjercicios resueltos de maximización: de método simplex
Ejercicios resueltos de maximización: de método simplex
 

Destacado

Teoria General de Sistemas
Teoria General de SistemasTeoria General de Sistemas
Teoria General de SistemasJulio Guzmán
 
Elementos de la terapia familiar sistémica 2
Elementos  de la terapia familiar sistémica 2Elementos  de la terapia familiar sistémica 2
Elementos de la terapia familiar sistémica 2UCR
 
Pensamiento Sistemico
Pensamiento SistemicoPensamiento Sistemico
Pensamiento SistemicoOscar Ascon
 
Teoria De Sistemas
Teoria De SistemasTeoria De Sistemas
Teoria De Sistemasmonchopaz
 

Destacado (7)

Recursividad
RecursividadRecursividad
Recursividad
 
7.recursividad
7.recursividad7.recursividad
7.recursividad
 
Teoria General de Sistemas
Teoria General de SistemasTeoria General de Sistemas
Teoria General de Sistemas
 
Elementos de la terapia familiar sistémica 2
Elementos  de la terapia familiar sistémica 2Elementos  de la terapia familiar sistémica 2
Elementos de la terapia familiar sistémica 2
 
Pensamiento Sistemico
Pensamiento SistemicoPensamiento Sistemico
Pensamiento Sistemico
 
Teoria de sistemas en las organizaciones
Teoria de sistemas en las organizacionesTeoria de sistemas en las organizaciones
Teoria de sistemas en las organizaciones
 
Teoria De Sistemas
Teoria De SistemasTeoria De Sistemas
Teoria De Sistemas
 

Similar a Recursividad (20)

2022-T10 P vs NP
2022-T10 P vs NP2022-T10 P vs NP
2022-T10 P vs NP
 
Torre hanoi miguelangel rivera
Torre hanoi miguelangel riveraTorre hanoi miguelangel rivera
Torre hanoi miguelangel rivera
 
Ronald medrano
Ronald medranoRonald medrano
Ronald medrano
 
Programación Dinámica
Programación DinámicaProgramación Dinámica
Programación Dinámica
 
Unidad i programacion visual elementos basicos
Unidad i programacion visual elementos basicosUnidad i programacion visual elementos basicos
Unidad i programacion visual elementos basicos
 
Funciones recursivas
Funciones recursivasFunciones recursivas
Funciones recursivas
 
Recursividad
RecursividadRecursividad
Recursividad
 
II Unidad
II UnidadII Unidad
II Unidad
 
II Unidad
II UnidadII Unidad
II Unidad
 
UTPL-LÓGICA DE LA PROGRAMACIÓN-II BIMESTRE-(abril agosto 2012)
UTPL-LÓGICA DE LA PROGRAMACIÓN-II BIMESTRE-(abril agosto 2012)UTPL-LÓGICA DE LA PROGRAMACIÓN-II BIMESTRE-(abril agosto 2012)
UTPL-LÓGICA DE LA PROGRAMACIÓN-II BIMESTRE-(abril agosto 2012)
 
Cap1.1 recursividad
Cap1.1 recursividadCap1.1 recursividad
Cap1.1 recursividad
 
Programacion d inamica
Programacion d inamicaProgramacion d inamica
Programacion d inamica
 
Introducción al modelado de problemas de Programación Lineal.
Introducción al modelado de problemas de Programación Lineal.Introducción al modelado de problemas de Programación Lineal.
Introducción al modelado de problemas de Programación Lineal.
 
Solucionario Guia Ipn 2011 - Guia resuelta del IPN
Solucionario Guia Ipn 2011 - Guia resuelta del IPN Solucionario Guia Ipn 2011 - Guia resuelta del IPN
Solucionario Guia Ipn 2011 - Guia resuelta del IPN
 
Plantilla
PlantillaPlantilla
Plantilla
 
Estructura de datos.ppt
Estructura de datos.pptEstructura de datos.ppt
Estructura de datos.ppt
 
Recursividad.pdf
Recursividad.pdfRecursividad.pdf
Recursividad.pdf
 
03 tda1 t2018
03 tda1 t201803 tda1 t2018
03 tda1 t2018
 
Curso Micro Tema 3 2
Curso Micro Tema 3 2Curso Micro Tema 3 2
Curso Micro Tema 3 2
 
Unidad 2 p1
Unidad 2 p1Unidad 2 p1
Unidad 2 p1
 

Último

OLIMPIADA DEL CONOCIMIENTO INFANTIL 2024.pptx
OLIMPIADA DEL CONOCIMIENTO INFANTIL 2024.pptxOLIMPIADA DEL CONOCIMIENTO INFANTIL 2024.pptx
OLIMPIADA DEL CONOCIMIENTO INFANTIL 2024.pptxjosetrinidadchavez
 
Caja de herramientas de inteligencia artificial para la academia y la investi...
Caja de herramientas de inteligencia artificial para la academia y la investi...Caja de herramientas de inteligencia artificial para la academia y la investi...
Caja de herramientas de inteligencia artificial para la academia y la investi...Lourdes Feria
 
Planificacion Anual 4to Grado Educacion Primaria 2024 Ccesa007.pdf
Planificacion Anual 4to Grado Educacion Primaria   2024   Ccesa007.pdfPlanificacion Anual 4to Grado Educacion Primaria   2024   Ccesa007.pdf
Planificacion Anual 4to Grado Educacion Primaria 2024 Ccesa007.pdfDemetrio Ccesa Rayme
 
programa dia de las madres 10 de mayo para evento
programa dia de las madres 10 de mayo  para eventoprograma dia de las madres 10 de mayo  para evento
programa dia de las madres 10 de mayo para eventoDiegoMtsS
 
Identificación de componentes Hardware del PC
Identificación de componentes Hardware del PCIdentificación de componentes Hardware del PC
Identificación de componentes Hardware del PCCesarFernandez937857
 
DECÁGOLO DEL GENERAL ELOY ALFARO DELGADO
DECÁGOLO DEL GENERAL ELOY ALFARO DELGADODECÁGOLO DEL GENERAL ELOY ALFARO DELGADO
DECÁGOLO DEL GENERAL ELOY ALFARO DELGADOJosé Luis Palma
 
CALENDARIZACION DE MAYO / RESPONSABILIDAD
CALENDARIZACION DE MAYO / RESPONSABILIDADCALENDARIZACION DE MAYO / RESPONSABILIDAD
CALENDARIZACION DE MAYO / RESPONSABILIDADauxsoporte
 
ACERTIJO DE LA BANDERA OLÍMPICA CON ECUACIONES DE LA CIRCUNFERENCIA. Por JAVI...
ACERTIJO DE LA BANDERA OLÍMPICA CON ECUACIONES DE LA CIRCUNFERENCIA. Por JAVI...ACERTIJO DE LA BANDERA OLÍMPICA CON ECUACIONES DE LA CIRCUNFERENCIA. Por JAVI...
ACERTIJO DE LA BANDERA OLÍMPICA CON ECUACIONES DE LA CIRCUNFERENCIA. Por JAVI...JAVIER SOLIS NOYOLA
 
RETO MES DE ABRIL .............................docx
RETO MES DE ABRIL .............................docxRETO MES DE ABRIL .............................docx
RETO MES DE ABRIL .............................docxAna Fernandez
 
DE LAS OLIMPIADAS GRIEGAS A LAS DEL MUNDO MODERNO.ppt
DE LAS OLIMPIADAS GRIEGAS A LAS DEL MUNDO MODERNO.pptDE LAS OLIMPIADAS GRIEGAS A LAS DEL MUNDO MODERNO.ppt
DE LAS OLIMPIADAS GRIEGAS A LAS DEL MUNDO MODERNO.pptELENA GALLARDO PAÚLS
 
Lecciones 04 Esc. Sabática. Defendamos la verdad
Lecciones 04 Esc. Sabática. Defendamos la verdadLecciones 04 Esc. Sabática. Defendamos la verdad
Lecciones 04 Esc. Sabática. Defendamos la verdadAlejandrino Halire Ccahuana
 
RAIZ CUADRADA Y CUBICA PARA NIÑOS DE PRIMARIA
RAIZ CUADRADA Y CUBICA PARA NIÑOS DE PRIMARIARAIZ CUADRADA Y CUBICA PARA NIÑOS DE PRIMARIA
RAIZ CUADRADA Y CUBICA PARA NIÑOS DE PRIMARIACarlos Campaña Montenegro
 
La empresa sostenible: Principales Características, Barreras para su Avance y...
La empresa sostenible: Principales Características, Barreras para su Avance y...La empresa sostenible: Principales Características, Barreras para su Avance y...
La empresa sostenible: Principales Características, Barreras para su Avance y...JonathanCovena1
 
TEMA 13 ESPAÑA EN DEMOCRACIA:DISTINTOS GOBIERNOS
TEMA 13 ESPAÑA EN DEMOCRACIA:DISTINTOS GOBIERNOSTEMA 13 ESPAÑA EN DEMOCRACIA:DISTINTOS GOBIERNOS
TEMA 13 ESPAÑA EN DEMOCRACIA:DISTINTOS GOBIERNOSjlorentemartos
 
SINTAXIS DE LA ORACIÓN SIMPLE 2023-2024.pptx
SINTAXIS DE LA ORACIÓN SIMPLE 2023-2024.pptxSINTAXIS DE LA ORACIÓN SIMPLE 2023-2024.pptx
SINTAXIS DE LA ORACIÓN SIMPLE 2023-2024.pptxlclcarmen
 
La triple Naturaleza del Hombre estudio.
La triple Naturaleza del Hombre estudio.La triple Naturaleza del Hombre estudio.
La triple Naturaleza del Hombre estudio.amayarogel
 
TIPOLOGÍA TEXTUAL- EXPOSICIÓN Y ARGUMENTACIÓN.pptx
TIPOLOGÍA TEXTUAL- EXPOSICIÓN Y ARGUMENTACIÓN.pptxTIPOLOGÍA TEXTUAL- EXPOSICIÓN Y ARGUMENTACIÓN.pptx
TIPOLOGÍA TEXTUAL- EXPOSICIÓN Y ARGUMENTACIÓN.pptxlclcarmen
 

Último (20)

OLIMPIADA DEL CONOCIMIENTO INFANTIL 2024.pptx
OLIMPIADA DEL CONOCIMIENTO INFANTIL 2024.pptxOLIMPIADA DEL CONOCIMIENTO INFANTIL 2024.pptx
OLIMPIADA DEL CONOCIMIENTO INFANTIL 2024.pptx
 
Caja de herramientas de inteligencia artificial para la academia y la investi...
Caja de herramientas de inteligencia artificial para la academia y la investi...Caja de herramientas de inteligencia artificial para la academia y la investi...
Caja de herramientas de inteligencia artificial para la academia y la investi...
 
Planificacion Anual 4to Grado Educacion Primaria 2024 Ccesa007.pdf
Planificacion Anual 4to Grado Educacion Primaria   2024   Ccesa007.pdfPlanificacion Anual 4to Grado Educacion Primaria   2024   Ccesa007.pdf
Planificacion Anual 4to Grado Educacion Primaria 2024 Ccesa007.pdf
 
programa dia de las madres 10 de mayo para evento
programa dia de las madres 10 de mayo  para eventoprograma dia de las madres 10 de mayo  para evento
programa dia de las madres 10 de mayo para evento
 
Identificación de componentes Hardware del PC
Identificación de componentes Hardware del PCIdentificación de componentes Hardware del PC
Identificación de componentes Hardware del PC
 
DECÁGOLO DEL GENERAL ELOY ALFARO DELGADO
DECÁGOLO DEL GENERAL ELOY ALFARO DELGADODECÁGOLO DEL GENERAL ELOY ALFARO DELGADO
DECÁGOLO DEL GENERAL ELOY ALFARO DELGADO
 
CALENDARIZACION DE MAYO / RESPONSABILIDAD
CALENDARIZACION DE MAYO / RESPONSABILIDADCALENDARIZACION DE MAYO / RESPONSABILIDAD
CALENDARIZACION DE MAYO / RESPONSABILIDAD
 
ACERTIJO DE LA BANDERA OLÍMPICA CON ECUACIONES DE LA CIRCUNFERENCIA. Por JAVI...
ACERTIJO DE LA BANDERA OLÍMPICA CON ECUACIONES DE LA CIRCUNFERENCIA. Por JAVI...ACERTIJO DE LA BANDERA OLÍMPICA CON ECUACIONES DE LA CIRCUNFERENCIA. Por JAVI...
ACERTIJO DE LA BANDERA OLÍMPICA CON ECUACIONES DE LA CIRCUNFERENCIA. Por JAVI...
 
RETO MES DE ABRIL .............................docx
RETO MES DE ABRIL .............................docxRETO MES DE ABRIL .............................docx
RETO MES DE ABRIL .............................docx
 
DE LAS OLIMPIADAS GRIEGAS A LAS DEL MUNDO MODERNO.ppt
DE LAS OLIMPIADAS GRIEGAS A LAS DEL MUNDO MODERNO.pptDE LAS OLIMPIADAS GRIEGAS A LAS DEL MUNDO MODERNO.ppt
DE LAS OLIMPIADAS GRIEGAS A LAS DEL MUNDO MODERNO.ppt
 
Repaso Pruebas CRECE PR 2024. Ciencia General
Repaso Pruebas CRECE PR 2024. Ciencia GeneralRepaso Pruebas CRECE PR 2024. Ciencia General
Repaso Pruebas CRECE PR 2024. Ciencia General
 
Lecciones 04 Esc. Sabática. Defendamos la verdad
Lecciones 04 Esc. Sabática. Defendamos la verdadLecciones 04 Esc. Sabática. Defendamos la verdad
Lecciones 04 Esc. Sabática. Defendamos la verdad
 
RAIZ CUADRADA Y CUBICA PARA NIÑOS DE PRIMARIA
RAIZ CUADRADA Y CUBICA PARA NIÑOS DE PRIMARIARAIZ CUADRADA Y CUBICA PARA NIÑOS DE PRIMARIA
RAIZ CUADRADA Y CUBICA PARA NIÑOS DE PRIMARIA
 
La empresa sostenible: Principales Características, Barreras para su Avance y...
La empresa sostenible: Principales Características, Barreras para su Avance y...La empresa sostenible: Principales Características, Barreras para su Avance y...
La empresa sostenible: Principales Características, Barreras para su Avance y...
 
Sesión de clase: Defendamos la verdad.pdf
Sesión de clase: Defendamos la verdad.pdfSesión de clase: Defendamos la verdad.pdf
Sesión de clase: Defendamos la verdad.pdf
 
TEMA 13 ESPAÑA EN DEMOCRACIA:DISTINTOS GOBIERNOS
TEMA 13 ESPAÑA EN DEMOCRACIA:DISTINTOS GOBIERNOSTEMA 13 ESPAÑA EN DEMOCRACIA:DISTINTOS GOBIERNOS
TEMA 13 ESPAÑA EN DEMOCRACIA:DISTINTOS GOBIERNOS
 
Presentacion Metodología de Enseñanza Multigrado
Presentacion Metodología de Enseñanza MultigradoPresentacion Metodología de Enseñanza Multigrado
Presentacion Metodología de Enseñanza Multigrado
 
SINTAXIS DE LA ORACIÓN SIMPLE 2023-2024.pptx
SINTAXIS DE LA ORACIÓN SIMPLE 2023-2024.pptxSINTAXIS DE LA ORACIÓN SIMPLE 2023-2024.pptx
SINTAXIS DE LA ORACIÓN SIMPLE 2023-2024.pptx
 
La triple Naturaleza del Hombre estudio.
La triple Naturaleza del Hombre estudio.La triple Naturaleza del Hombre estudio.
La triple Naturaleza del Hombre estudio.
 
TIPOLOGÍA TEXTUAL- EXPOSICIÓN Y ARGUMENTACIÓN.pptx
TIPOLOGÍA TEXTUAL- EXPOSICIÓN Y ARGUMENTACIÓN.pptxTIPOLOGÍA TEXTUAL- EXPOSICIÓN Y ARGUMENTACIÓN.pptx
TIPOLOGÍA TEXTUAL- EXPOSICIÓN Y ARGUMENTACIÓN.pptx
 

Recursividad

  • 2. Recursión (Recursividad) Procedimiento de resolver un problema complejo reduciéndolo en uno o más subproblemas 1. Con la misma estructura que el problema original 2. Más simples de resolver que el problema original A su vez cada subproblema se divide, usando el mismo procedimiento, en subproblemas aún más simples Los subproblemas llegarán a ser tan simples que no hará falta dividirlos para resolverlos La solución del problema inicial se obtiene combinando las soluciones de cada subproblema Programación, UH 2013-2014 2
  • 3. Recursividad en la vida cotidiana • Recorrer un trayecto de un origen a un destino ‐ Dar un paso desde el origen hacia el destino ‐ Dar (n-1) pasos hacia el destino desde el nuevo origen • Subir una escalera ‐ Subir un escalón ‐ Subir los (n-1) escalones restantes • Comerse una pizza (o cualquier otra cosa) ‐ Comerse una porción ‐ Comerse las (n-1) porciones restantes Programación, UH 2013-2014 3
  • 4. Recursividad en la vida cotidiana Distribuir productos que se importan al país para la venta a la población en la red minorista de mercados Ejemplo: Distribuir 1000 toneladas de arroz para 1000 mercados (1 tonelada para cada uno) Distribuir directamente desde el puerto a los mercados no resulta práctico • Dividir el total en partes según la cantidad de provincias • Enviar a cada provincia una parte, y que cada provincia se encargue de la distribución de su parte • A su vez, cada provincia divide su parte y envía nuevas porciones a sus municipios • Luego cada municipio vuelve a dividir su parte y la distribuye a cada mercado minorista Programación, UH 2013-2014 4
  • 5. Problema de distribución de mercancía PAIS 1000 ton 100 ton 2 1 ... 10 PROVINCIA MUNICIPIO 10 ton 1 ton ... 2 1 ... 1 1 10 10 MERCADO Los subproblemas son cada vez más pequeños, y llega un momento en que no hace falta dividirlos para resolverlos Programación, UH 2013-2014 5
  • 6. Estructura general de un algoritmo recursivo Algoritmo RECURSIVO IF (Problema Simple) Condición de Parada Caso Base Resolverlo directamente ELSE Resolver de manera recursiva Dividir en subproblemas P1, P2, ..., Pn Resolver(P1); Resolver(P2); ... Resolver(Pn) Combinar las soluciones de cada subproblema Programación, UH 2013-2014 6
  • 8. Algoritmo para guardar las Matrioskas CASO BASE SUBPROBLEMA 6 5 4 1 Matrioska Guardar n-1 Matrioskas 3 2 1 Guardar Matrioskas (n) IF (n > 1) Abrir Matrioska n Subproblema Guardar Matrioskas (n-1) Colocar n-1 dentro de n Cerrar Matrioska n Programación, UH 2013-2014 8
  • 9. Ejemplo: Factorial Caso Base 1, n = 0 FACT(n) Definición Recursiva de Factorial n * FACT(n-1) , n > 0 FACT(5) = 1 * 2 * 3 * 4 * 5 = 120 FACT(5) = 5 * FACT(4) 5*4*3*2*1*1 4*3*2*1*1 4 * FACT(3) 3*2*1*1 3 * FACT(2) División en subproblemas 2 * FACT(1) 1 * FACT(0) Programación, UH 2013-2014 120 1 Solución del problema original 2*1*1 1*1 Combinar soluciones de los subproblemas 9
  • 11. Torres de Hanoi Tenemos en una estaca una pila de discos de mayor a menor y queremos pasarlos a la tercera estaca usando la del medio como auxiliar, pero solo se puede mover un disco a la vez y nunca se puede poner un disco de mayor tamaño sobre uno menor ORIGEN AUXILIAR DESTINO ¿Cómo mover cualquier cantidad de discos? Programación, UH 2013-2014 11
  • 12. Torres de Hanoi CASO BASE Mover 1 disco de ORIGEN a DESTINO ORIGEN Programación, UH 2013-2014 AUXILIAR DESTINO 12
  • 13. Torres de Hanoi SUBPROBLEMA Si la cantidad de discos es mayor que 1 1. Mover (n-1) discos de ORIGEN a AUXILIAR 2. Mover el disco que queda en ORIGEN para DESTINO 3. Mover los (n-1) de AUXILIAR a DESTINO Programación, UH 2013-2014 13
  • 14. Torres de Hanoi ORIGEN AUXILIAR DESTINO Subproblema Caso Base Programación, UH 2013-2014 Subproblema 14
  • 15. Torres de Hanoi Caso Base de la recursión Converge al caso base Converge al caso base Programación, UH 2013-2014 15
  • 16. DEMO Torres de Hanoi Intente hacerlo sin recursividad Programación, UH 2013-2014 16
  • 17. Fractales: Copo de Nieve Construcción de un fractal con forma de Copo de Nieve Figura que a distintas escalas presenta la misma forma geométrica Programación, UH 2013-2014 17
  • 18. Fractales: Triángulo de Sierpinski Programación, UH 2013-2014 18
  • 22. Ejemplo: Fibonacci FIB(n) 0, n=0 1, n=1 FIB(n-1) + FIB(n-2), Fib(5) Fib(4) Fib(3) Fib(2) n>1 Fib(1) Fib(0) Fib(1) 0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, … FIB(5) = FIB(4) + FIB(3) Fib(2) Fib(1) Se repite el cálculo innecesariamente Fib(0) Fib(3) Converge al caso base Fib(2) Fib(1) Converge al caso base Intente buscar el término 50 con este algoritmo y vea cuánto UH 2013-2014 Programación,demora. Pruebe con la variante interativa. Fib(0) Fib(1) Fib(2) Fib(1) Fib(0)
  • 23. Reglas para aplicar la Recursividad 1. Descomponer el problema original en subproblemas más simples del mismo tipo 2. Resolver los subproblemas, usando el mismo método, y combinar sus soluciones para generar la solución del problema original 3. La subdivisión en subproblemas siempre debe converger a un caso base que se pueda resolver sin necesidad de subdividir Confiar en la recursividad! Programación, UH 2013-2014 24
  • 25. Clase Práctica Calcular una base elevada a una potencia 2^3 = 2 * 2 * 2 = 8 6^4 = 6 * 6 * 6 * 6 = 1296 long Potencia(int base, int exponente) Multiplicar dos números sin utilizar el operador * 21 * 3 = 21 + 21 + 21 = 63 2 * 24 = 24 + 24 = 48 Su solución debe hacer el menor número posible de llamados recursivos long Producto(int a, int b) Programación, UH 2013-2014 26
  • 26. Clase Práctica Determinar si un número es SuperPrimo. Un número SuperPrimo si es primo y además al quitarle la última cifra sigue siendo SuperPrimo. Un número primo de una cifra se considera SuperPrimo. bool EsSuperPrimo(int n) Implemente un método que determine si una cadena es palíndromo bool EsPalindromo(string s) Programación, UH 2013-2014 27
  • 27. Clase Práctica Implemente un método int TerminoWirth(int n) que devuelva el término n-ésimo perteneciente al conjunto de Wirth. Conjunto de Wirth (W) 1 W Si x W Programación, UH 2013-2014 2x + 1 3x + 1 W W 28
  • 28. Clase Práctica (Lab) Programe un método que permita al usuario escribir en la Consola tantas líneas como quiera. Cuando el usuario de “ENTER” sin haber escrito algún texto, debe imprimir cada una de las líneas que escribió el usuario, pero en orden inverso. No debe usar ninguna estructura de datos para almacenar todas las líneas que escribe el ususario. Modifique el ejemplo de fractales visto en la clase para generar el Triángulo de Sierpinski. Programe un algoritmo para generar un fractal con forma de copo de nieve. Programación, UH 2013-2014 29