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

Ejercicios resueltos de programacion
Ejercicios resueltos de programacionEjercicios resueltos de programacion
Ejercicios resueltos de programacionJaime amambal
 
Dependencia lineal
Dependencia linealDependencia lineal
Dependencia linealrosy
 
Ejercicios resueltos grafos
Ejercicios resueltos grafosEjercicios resueltos grafos
Ejercicios resueltos grafosTERE FERNÁNDEZ
 
Reporte metodos de busqueda y ordenamiento
Reporte metodos de busqueda y ordenamientoReporte metodos de busqueda y ordenamiento
Reporte metodos de busqueda y ordenamientoTAtiizz Villalobos
 
Coeficientes indeterminados
Coeficientes indeterminadosCoeficientes indeterminados
Coeficientes indeterminadosRicardo Garibay
 
Ejercicios pilas y_colas
Ejercicios pilas y_colasEjercicios pilas y_colas
Ejercicios pilas y_colaskelvinst
 
Arreglos vectores pseint
Arreglos vectores pseintArreglos vectores pseint
Arreglos vectores pseintHEIVER CUESTA
 
Algoritmos programacion-python
Algoritmos programacion-pythonAlgoritmos programacion-python
Algoritmos programacion-pythonLUIS COAQUIRA
 
Matemáticas discretas- Teoría de Grafos
Matemáticas discretas- Teoría de GrafosMatemáticas discretas- Teoría de Grafos
Matemáticas discretas- Teoría de GrafosAngela Janeth Jimenez
 

La actualidad más candente (20)

Ejercicios
EjerciciosEjercicios
Ejercicios
 
Ejercicios resueltos de programacion
Ejercicios resueltos de programacionEjercicios resueltos de programacion
Ejercicios resueltos de programacion
 
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
 
Aplicaciones de los árboles y grafos
Aplicaciones de los árboles y grafosAplicaciones de los árboles y grafos
Aplicaciones de los árboles y grafos
 
Dependencia lineal
Dependencia linealDependencia lineal
Dependencia lineal
 
Ejercicios resueltos grafos
Ejercicios resueltos grafosEjercicios resueltos grafos
Ejercicios resueltos grafos
 
Clases abstractas
Clases abstractasClases abstractas
Clases abstractas
 
Programación 3: listas enlazadas
Programación 3: listas enlazadasProgramación 3: listas enlazadas
Programación 3: listas enlazadas
 
Ejercicios propuestos
Ejercicios propuestosEjercicios propuestos
Ejercicios propuestos
 
Administracion de proyectos Situacion actual del entorno
Administracion de proyectos Situacion actual del entornoAdministracion de proyectos Situacion actual del entorno
Administracion de proyectos Situacion actual del entorno
 
NOTACIÓN POSTFIJA E INFIJA - JAVA
NOTACIÓN POSTFIJA E INFIJA - JAVANOTACIÓN POSTFIJA E INFIJA - JAVA
NOTACIÓN POSTFIJA E INFIJA - JAVA
 
Reporte metodos de busqueda y ordenamiento
Reporte metodos de busqueda y ordenamientoReporte metodos de busqueda y ordenamiento
Reporte metodos de busqueda y ordenamiento
 
Coeficientes indeterminados
Coeficientes indeterminadosCoeficientes indeterminados
Coeficientes indeterminados
 
Ejercicios pilas y_colas
Ejercicios pilas y_colasEjercicios pilas y_colas
Ejercicios pilas y_colas
 
Recursividad directa e indirecta
Recursividad directa e indirectaRecursividad directa e indirecta
Recursividad directa e indirecta
 
Funciones recursivas
Funciones recursivasFunciones recursivas
Funciones recursivas
 
Listas
ListasListas
Listas
 
Arreglos vectores pseint
Arreglos vectores pseintArreglos vectores pseint
Arreglos vectores pseint
 
Algoritmos programacion-python
Algoritmos programacion-pythonAlgoritmos programacion-python
Algoritmos programacion-python
 
Matemáticas discretas- Teoría de Grafos
Matemáticas discretas- Teoría de GrafosMatemáticas discretas- Teoría de Grafos
Matemáticas discretas- Teoría de Grafos
 

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)

Recursividad (Divide y Vencerás)
Recursividad (Divide y Vencerás)Recursividad (Divide y Vencerás)
Recursividad (Divide y Vencerás)
 
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
 
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
 
Recursividad.ppt
Recursividad.pptRecursividad.ppt
Recursividad.ppt
 

Último

sesión de aprendizaje 4 E1 Exposición oral.pdf
sesión de aprendizaje 4 E1 Exposición oral.pdfsesión de aprendizaje 4 E1 Exposición oral.pdf
sesión de aprendizaje 4 E1 Exposición oral.pdfpatriciavsquezbecerr
 
Estas son las escuelas y colegios que tendrán modalidad no presencial este lu...
Estas son las escuelas y colegios que tendrán modalidad no presencial este lu...Estas son las escuelas y colegios que tendrán modalidad no presencial este lu...
Estas son las escuelas y colegios que tendrán modalidad no presencial este lu...fcastellanos3
 
CIENCIAS NATURALES 4 TO ambientes .docx
CIENCIAS NATURALES 4 TO  ambientes .docxCIENCIAS NATURALES 4 TO  ambientes .docx
CIENCIAS NATURALES 4 TO ambientes .docxAgustinaNuez21
 
periodico mural y sus partes y caracteristicas
periodico mural y sus partes y caracteristicasperiodico mural y sus partes y caracteristicas
periodico mural y sus partes y caracteristicas123yudy
 
Manejo del Dengue, generalidades, actualización marzo 2024 minsa
Manejo del Dengue, generalidades, actualización marzo 2024 minsaManejo del Dengue, generalidades, actualización marzo 2024 minsa
Manejo del Dengue, generalidades, actualización marzo 2024 minsaLuis Minaya
 
05 Fenomenos fisicos y quimicos de la materia.pdf
05 Fenomenos fisicos y quimicos de la materia.pdf05 Fenomenos fisicos y quimicos de la materia.pdf
05 Fenomenos fisicos y quimicos de la materia.pdfRAMON EUSTAQUIO CARO BAYONA
 
Fichas de MatemáticA QUINTO DE SECUNDARIA).pdf
Fichas de MatemáticA QUINTO DE SECUNDARIA).pdfFichas de MatemáticA QUINTO DE SECUNDARIA).pdf
Fichas de MatemáticA QUINTO DE SECUNDARIA).pdfssuser50d1252
 
PROGRAMACION ANUAL DE MATEMATICA 2024.docx
PROGRAMACION ANUAL DE MATEMATICA 2024.docxPROGRAMACION ANUAL DE MATEMATICA 2024.docx
PROGRAMACION ANUAL DE MATEMATICA 2024.docxEribertoPerezRamirez
 
Fichas de Matemática DE SEGUNDO DE SECUNDARIA.pdf
Fichas de Matemática DE SEGUNDO DE SECUNDARIA.pdfFichas de Matemática DE SEGUNDO DE SECUNDARIA.pdf
Fichas de Matemática DE SEGUNDO DE SECUNDARIA.pdfssuser50d1252
 
FICHA DE MONITOREO Y ACOMPAÑAMIENTO 2024 MINEDU
FICHA DE MONITOREO Y ACOMPAÑAMIENTO  2024 MINEDUFICHA DE MONITOREO Y ACOMPAÑAMIENTO  2024 MINEDU
FICHA DE MONITOREO Y ACOMPAÑAMIENTO 2024 MINEDUgustavorojas179704
 
Uses of simple past and time expressions
Uses of simple past and time expressionsUses of simple past and time expressions
Uses of simple past and time expressionsConsueloSantana3
 
Mapa Mental de estrategias de articulación de las areas curriculares.pdf
Mapa Mental de estrategias de articulación de las areas curriculares.pdfMapa Mental de estrategias de articulación de las areas curriculares.pdf
Mapa Mental de estrategias de articulación de las areas curriculares.pdfvictorbeltuce
 
Estrategias de enseñanza - aprendizaje. Seminario de Tecnologia..pptx.pdf
Estrategias de enseñanza - aprendizaje. Seminario de Tecnologia..pptx.pdfEstrategias de enseñanza - aprendizaje. Seminario de Tecnologia..pptx.pdf
Estrategias de enseñanza - aprendizaje. Seminario de Tecnologia..pptx.pdfAlfredoRamirez953210
 
Fichas de Matemática TERCERO DE SECUNDARIA.pdf
Fichas de Matemática TERCERO DE SECUNDARIA.pdfFichas de Matemática TERCERO DE SECUNDARIA.pdf
Fichas de Matemática TERCERO DE SECUNDARIA.pdfssuser50d1252
 
Monitoreo a los coordinadores de las IIEE JEC_28.02.2024.vf.pptx
Monitoreo a los coordinadores de las IIEE JEC_28.02.2024.vf.pptxMonitoreo a los coordinadores de las IIEE JEC_28.02.2024.vf.pptx
Monitoreo a los coordinadores de las IIEE JEC_28.02.2024.vf.pptxJUANCARLOSAPARCANARE
 
3. Pedagogía de la Educación: Como objeto de la didáctica.ppsx
3. Pedagogía de la Educación: Como objeto de la didáctica.ppsx3. Pedagogía de la Educación: Como objeto de la didáctica.ppsx
3. Pedagogía de la Educación: Como objeto de la didáctica.ppsxJuanpm27
 
Secuencia didáctica.DOÑA CLEMENTINA.2024.docx
Secuencia didáctica.DOÑA CLEMENTINA.2024.docxSecuencia didáctica.DOÑA CLEMENTINA.2024.docx
Secuencia didáctica.DOÑA CLEMENTINA.2024.docxNataliaGonzalez619348
 

Último (20)

sesión de aprendizaje 4 E1 Exposición oral.pdf
sesión de aprendizaje 4 E1 Exposición oral.pdfsesión de aprendizaje 4 E1 Exposición oral.pdf
sesión de aprendizaje 4 E1 Exposición oral.pdf
 
Estas son las escuelas y colegios que tendrán modalidad no presencial este lu...
Estas son las escuelas y colegios que tendrán modalidad no presencial este lu...Estas son las escuelas y colegios que tendrán modalidad no presencial este lu...
Estas son las escuelas y colegios que tendrán modalidad no presencial este lu...
 
CIENCIAS NATURALES 4 TO ambientes .docx
CIENCIAS NATURALES 4 TO  ambientes .docxCIENCIAS NATURALES 4 TO  ambientes .docx
CIENCIAS NATURALES 4 TO ambientes .docx
 
periodico mural y sus partes y caracteristicas
periodico mural y sus partes y caracteristicasperiodico mural y sus partes y caracteristicas
periodico mural y sus partes y caracteristicas
 
Sesión La luz brilla en la oscuridad.pdf
Sesión  La luz brilla en la oscuridad.pdfSesión  La luz brilla en la oscuridad.pdf
Sesión La luz brilla en la oscuridad.pdf
 
Manejo del Dengue, generalidades, actualización marzo 2024 minsa
Manejo del Dengue, generalidades, actualización marzo 2024 minsaManejo del Dengue, generalidades, actualización marzo 2024 minsa
Manejo del Dengue, generalidades, actualización marzo 2024 minsa
 
05 Fenomenos fisicos y quimicos de la materia.pdf
05 Fenomenos fisicos y quimicos de la materia.pdf05 Fenomenos fisicos y quimicos de la materia.pdf
05 Fenomenos fisicos y quimicos de la materia.pdf
 
Fichas de MatemáticA QUINTO DE SECUNDARIA).pdf
Fichas de MatemáticA QUINTO DE SECUNDARIA).pdfFichas de MatemáticA QUINTO DE SECUNDARIA).pdf
Fichas de MatemáticA QUINTO DE SECUNDARIA).pdf
 
PROGRAMACION ANUAL DE MATEMATICA 2024.docx
PROGRAMACION ANUAL DE MATEMATICA 2024.docxPROGRAMACION ANUAL DE MATEMATICA 2024.docx
PROGRAMACION ANUAL DE MATEMATICA 2024.docx
 
Fichas de Matemática DE SEGUNDO DE SECUNDARIA.pdf
Fichas de Matemática DE SEGUNDO DE SECUNDARIA.pdfFichas de Matemática DE SEGUNDO DE SECUNDARIA.pdf
Fichas de Matemática DE SEGUNDO DE SECUNDARIA.pdf
 
FICHA DE MONITOREO Y ACOMPAÑAMIENTO 2024 MINEDU
FICHA DE MONITOREO Y ACOMPAÑAMIENTO  2024 MINEDUFICHA DE MONITOREO Y ACOMPAÑAMIENTO  2024 MINEDU
FICHA DE MONITOREO Y ACOMPAÑAMIENTO 2024 MINEDU
 
VISITA À PROTEÇÃO CIVIL _
VISITA À PROTEÇÃO CIVIL                  _VISITA À PROTEÇÃO CIVIL                  _
VISITA À PROTEÇÃO CIVIL _
 
Uses of simple past and time expressions
Uses of simple past and time expressionsUses of simple past and time expressions
Uses of simple past and time expressions
 
Mapa Mental de estrategias de articulación de las areas curriculares.pdf
Mapa Mental de estrategias de articulación de las areas curriculares.pdfMapa Mental de estrategias de articulación de las areas curriculares.pdf
Mapa Mental de estrategias de articulación de las areas curriculares.pdf
 
Estrategias de enseñanza - aprendizaje. Seminario de Tecnologia..pptx.pdf
Estrategias de enseñanza - aprendizaje. Seminario de Tecnologia..pptx.pdfEstrategias de enseñanza - aprendizaje. Seminario de Tecnologia..pptx.pdf
Estrategias de enseñanza - aprendizaje. Seminario de Tecnologia..pptx.pdf
 
Fichas de Matemática TERCERO DE SECUNDARIA.pdf
Fichas de Matemática TERCERO DE SECUNDARIA.pdfFichas de Matemática TERCERO DE SECUNDARIA.pdf
Fichas de Matemática TERCERO DE SECUNDARIA.pdf
 
Monitoreo a los coordinadores de las IIEE JEC_28.02.2024.vf.pptx
Monitoreo a los coordinadores de las IIEE JEC_28.02.2024.vf.pptxMonitoreo a los coordinadores de las IIEE JEC_28.02.2024.vf.pptx
Monitoreo a los coordinadores de las IIEE JEC_28.02.2024.vf.pptx
 
3. Pedagogía de la Educación: Como objeto de la didáctica.ppsx
3. Pedagogía de la Educación: Como objeto de la didáctica.ppsx3. Pedagogía de la Educación: Como objeto de la didáctica.ppsx
3. Pedagogía de la Educación: Como objeto de la didáctica.ppsx
 
PPTX: La luz brilla en la oscuridad.pptx
PPTX: La luz brilla en la oscuridad.pptxPPTX: La luz brilla en la oscuridad.pptx
PPTX: La luz brilla en la oscuridad.pptx
 
Secuencia didáctica.DOÑA CLEMENTINA.2024.docx
Secuencia didáctica.DOÑA CLEMENTINA.2024.docxSecuencia didáctica.DOÑA CLEMENTINA.2024.docx
Secuencia didáctica.DOÑA CLEMENTINA.2024.docx
 

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