SlideShare uma empresa Scribd logo
1 de 25
Baixar para ler offline
Presentación




                Recursión

          Mauricio Paletta
     INGENIERÍA EN INFORMÁTICA
                  Programación II




          Coordinación General de Pregrado
UNIVERSIDAD NACIONAL EXPERIMENTAL DE GUAYANA

                               Programación II
Definición

Recursión es el fenómeno mediante el cual
algo (proceso / estructura) se puede definir
en términos de sí mismo.
Un proceso es recursivo cuando en el
cuerpo de su definición se encuentra una
llamada al mismo proceso.
Una estructura es recursiva cuando la
misma estructura es parte de su definición.


                         Programación II
Definición

NOTA: La clave para entender recursión es
 saber diferenciar / identificar lo que se está
 definiendo (el problema) de la definición.
 Luego, colocar en la definición lo que se
 está definiendo permite dar una definición
 recursiva del problema.




                         Programación II
Proceso recursivo

En términos algorítmicos, un proceso
recursivo es una función / procedimiento que
tiene una llamada a la misma función /
procedimiento en su bloque de instrucciones.
NOTA: La mejor manera de codificar un
 proceso recursivo es obtener primero la
 definición recursiva del problema.



                        Programación II
Proceso recursivo

NOTA: Todos los problemas tienen tanto una
 definición recursiva como una no recursiva.
 A veces no es trivial encontrar una a partir
 de la otra.
 Algunos problemas son más fáciles de
 codificar de forma recursiva. Entender /
 usar recursión es muy importante en estos
 casos.


                        Programación II
Proceso recursivo

Si un proceso recursivo se llama a sí mismo
tiene que parar en algún momento (caso
contrario hay un proceso “infinito” de
acumulaciones de llamadas, hasta que los
recursos computacionales lo permitan).
Quiere decir que es necesario identificar una
condición de parada de la recursión.



                         Programación II
Proceso recursivo

En resumen, para codificar un proceso de
manera recursiva se requiere dos cosas:
 1) Tener la definición recursiva del
    problema.
 2) Identificar la condición de parada (por lo
    general es lo primero que se hace).




                        Programación II
Proceso recursivo

Ejemplo: Factorial de un número.
 Definición no recursiva:
    Fac(N) = N x (N-1) x (N-2) x … x 1

  Lo que se               La
     está             definición
  definiendo


                         Programación II
Proceso recursivo

Ejemplo: Factorial de un número.
 Definición no recursiva:
    Fac(N) = N x (N-1) x (N-2) x … x 1

  Lo que se               La
     está             definición
  definiendo


                         Programación II
Proceso recursivo

Ejemplo: Factorial de un número.
 Definición no recursiva:
    Fac(N) = N x (N-1) x (N-2) x … x 1

  Lo que se               La
     está             definición
  definiendo


                         Programación II
Proceso recursivo

  Fac(5) = 5 x 4 x 3 x 2 x 1

Nótese que:
  Fac(4) = 4 x (3) x (2) x 1

Entonces:
  Fac(5) = 5 x Fac(4)



                         Programación II
Proceso recursivo

Definición recursiva:
  Fac(N) = N x Fac(N-1)

Lo que se       Lo que se está definiendo
   está        está dentro de la definición
definiendo
                          Condición
  Fac(1) = Fac(0) = 1
                          de parada

                        Programación II
Proceso recursivo




           Programación II
Proceso recursivo

Ejemplo: Término de Fibonacci.
 Definición no recursiva:
   Fib(N) = 0, 1, 1, 2, 3, 5, 8, 13, …

  Lo que se               La
     está             definición
  definiendo


                           Programación II
Proceso recursivo

  Fib(8) = 13

Nótese que:
  13 = 5 + 8 = Fib(6) + Fib(7)

Entonces:
  Fib(8) = Fib(6) + Fib(7)



                        Programación II
Proceso recursivo

Definición recursiva:
  Fib(N) = Fib(N-2) + Fib(N-1)

Lo que se       Lo que se está definiendo
   está        está dentro de la definición
definiendo

  Fib(1) = 0    Condición
  Fib(2) = 1    de parada

                        Programación II
Proceso recursivo




           Programación II
Proceso recursivo

Ejemplo: Torres de Hanoi para N discos.

                               1) Un disco no
                                  puede colocarse
                                  sobre otro disco
                                  de tamaño
                                  menor.
                               2) Sólo puede
                                  moverse un
                                  disco a la vez.




                       Programación II
Proceso recursivo

Lo que se está definiendo: mover N discos
de un poste a otro.
Problema: mover N discos del poste 1 al
poste 3.
Definición recursiva: mover N-1 discos del
poste 1 al poste 2; mover disco N del poste
1 al poste 3; mover N-1 discos del poste 2
al poste 3.


                      Programación II
Proceso recursivo

Este es del tipo de problema muy difícil de
resolver utilizando una estrategia diferente
a la recursión.
Utilizando la recursión el problema se
resuelve muy simple, basta seguir la
lectura de la definición.
Nótese la complejidad del problema
cuando N crece.


                       Programación II
Proceso recursivo




           Programación II
Proceso recursivo




           Programación II
Proceso recursivo




           Programación II
Estructura recursiva

Ocurre cuando uno de los campos o atributos
de la estructura (por ejemplo una clase)
coincide con el mismo tipo de la estructura
que se está definiendo.
También puede darse con direcciones de
memoria o apuntadores para definir
estructuras de datos no lineales (es lo más
común).


                        Programación II
Estructura recursiva


AlgoRecursivo




                Programación II

Mais conteúdo relacionado

Mais procurados

Unidad 4 est. dat. recursividad
Unidad 4  est. dat. recursividadUnidad 4  est. dat. recursividad
Unidad 4 est. dat. recursividadrehoscript
 
Algoritmos recursivos
Algoritmos recursivosAlgoritmos recursivos
Algoritmos recursivosfeytho
 
Teoría de complejidad computacional (tcc)
Teoría de complejidad computacional (tcc)Teoría de complejidad computacional (tcc)
Teoría de complejidad computacional (tcc)Raquel Nuñez
 
Jflambert lyada - ayudantia matematicas discretas
Jflambert   lyada - ayudantia matematicas discretasJflambert   lyada - ayudantia matematicas discretas
Jflambert lyada - ayudantia matematicas discretasFrancisco Lambert Obediente
 
Problema de la ocho reinas. Implementación en Prolog.
Problema de la ocho reinas. Implementación en Prolog.Problema de la ocho reinas. Implementación en Prolog.
Problema de la ocho reinas. Implementación en Prolog.Mayra Villanueva
 
Estructura de datos avanzada
Estructura de datos avanzadaEstructura de datos avanzada
Estructura de datos avanzadaMaestros Online
 
Que es complejidad computacional
Que es complejidad computacionalQue es complejidad computacional
Que es complejidad computacionalJonathan Bastidas
 
Teoría de complejidad computacional (tcc).pptx
Teoría de complejidad computacional (tcc).pptxTeoría de complejidad computacional (tcc).pptx
Teoría de complejidad computacional (tcc).pptxYared Redman
 

Mais procurados (14)

2.1 recursividad
2.1 recursividad2.1 recursividad
2.1 recursividad
 
Ordenacion
OrdenacionOrdenacion
Ordenacion
 
Recursividad
RecursividadRecursividad
Recursividad
 
Unidad 4 est. dat. recursividad
Unidad 4  est. dat. recursividadUnidad 4  est. dat. recursividad
Unidad 4 est. dat. recursividad
 
Algoritmos recursivos
Algoritmos recursivosAlgoritmos recursivos
Algoritmos recursivos
 
Teoría de complejidad computacional (tcc)
Teoría de complejidad computacional (tcc)Teoría de complejidad computacional (tcc)
Teoría de complejidad computacional (tcc)
 
Jflambert lyada - ayudantia matematicas discretas
Jflambert   lyada - ayudantia matematicas discretasJflambert   lyada - ayudantia matematicas discretas
Jflambert lyada - ayudantia matematicas discretas
 
Problema de la ocho reinas. Implementación en Prolog.
Problema de la ocho reinas. Implementación en Prolog.Problema de la ocho reinas. Implementación en Prolog.
Problema de la ocho reinas. Implementación en Prolog.
 
Programacion practica prolog
Programacion practica prologProgramacion practica prolog
Programacion practica prolog
 
Estructura de datos avanzada
Estructura de datos avanzadaEstructura de datos avanzada
Estructura de datos avanzada
 
Enfoques
EnfoquesEnfoques
Enfoques
 
Que es complejidad computacional
Que es complejidad computacionalQue es complejidad computacional
Que es complejidad computacional
 
Problema de las 8 reinas
Problema de las 8 reinasProblema de las 8 reinas
Problema de las 8 reinas
 
Teoría de complejidad computacional (tcc).pptx
Teoría de complejidad computacional (tcc).pptxTeoría de complejidad computacional (tcc).pptx
Teoría de complejidad computacional (tcc).pptx
 

Destaque

Recursividad Con C#
Recursividad Con C#Recursividad Con C#
Recursividad Con C#rezzaca
 
Varios Algoritmos Voraces De DecisióN Y OptimizacióN
Varios Algoritmos Voraces De DecisióN Y OptimizacióNVarios Algoritmos Voraces De DecisióN Y OptimizacióN
Varios Algoritmos Voraces De DecisióN Y OptimizacióNSalvador Fernández Fernández
 
Manual de análisis y diseño de algoritmos
Manual de análisis y diseño de algoritmosManual de análisis y diseño de algoritmos
Manual de análisis y diseño de algoritmosJaro
 
Algoritmo, Ordenacion y Búsqueda
Algoritmo, Ordenacion y BúsquedaAlgoritmo, Ordenacion y Búsqueda
Algoritmo, Ordenacion y BúsquedaJavier Alvarez
 

Destaque (9)

7.recursividad
7.recursividad7.recursividad
7.recursividad
 
Recursividad Con C#
Recursividad Con C#Recursividad Con C#
Recursividad Con C#
 
Divide y Vencerás
Divide y VencerásDivide y Vencerás
Divide y Vencerás
 
Varios Algoritmos Voraces De DecisióN Y OptimizacióN
Varios Algoritmos Voraces De DecisióN Y OptimizacióNVarios Algoritmos Voraces De DecisióN Y OptimizacióN
Varios Algoritmos Voraces De DecisióN Y OptimizacióN
 
Divide y Venceras
Divide y VencerasDivide y Venceras
Divide y Venceras
 
Manual de análisis y diseño de algoritmos
Manual de análisis y diseño de algoritmosManual de análisis y diseño de algoritmos
Manual de análisis y diseño de algoritmos
 
Estructuras repetitivas
Estructuras repetitivasEstructuras repetitivas
Estructuras repetitivas
 
Estructura selectiva simple
Estructura selectiva simpleEstructura selectiva simple
Estructura selectiva simple
 
Algoritmo, Ordenacion y Búsqueda
Algoritmo, Ordenacion y BúsquedaAlgoritmo, Ordenacion y Búsqueda
Algoritmo, Ordenacion y Búsqueda
 

Semelhante a Recursividad en programación (15)

Recursividad 100329105433-phpapp01
Recursividad 100329105433-phpapp01Recursividad 100329105433-phpapp01
Recursividad 100329105433-phpapp01
 
Tema 1 Recursión
Tema 1 RecursiónTema 1 Recursión
Tema 1 Recursión
 
Unidad 2
Unidad 2Unidad 2
Unidad 2
 
Unidad 2
Unidad 2Unidad 2
Unidad 2
 
Recursividad.pdf
Recursividad.pdfRecursividad.pdf
Recursividad.pdf
 
03 tda1 t2018
03 tda1 t201803 tda1 t2018
03 tda1 t2018
 
recursividad.pptx
recursividad.pptxrecursividad.pptx
recursividad.pptx
 
recursividad EN PROGRAMACION ORIENTADA .pptx
recursividad EN PROGRAMACION ORIENTADA .pptxrecursividad EN PROGRAMACION ORIENTADA .pptx
recursividad EN PROGRAMACION ORIENTADA .pptx
 
Análisis de complejidad big o
Análisis de complejidad  big o Análisis de complejidad  big o
Análisis de complejidad big o
 
Recursividad
RecursividadRecursividad
Recursividad
 
Complejidad
ComplejidadComplejidad
Complejidad
 
Asignacion
AsignacionAsignacion
Asignacion
 
La_Recursividad.pptx
La_Recursividad.pptxLa_Recursividad.pptx
La_Recursividad.pptx
 
Guía n° 05 Matemática IV
Guía n° 05 Matemática IVGuía n° 05 Matemática IV
Guía n° 05 Matemática IV
 
Estructura de Datos - Unidad II Recursividad
Estructura de Datos - Unidad II RecursividadEstructura de Datos - Unidad II Recursividad
Estructura de Datos - Unidad II Recursividad
 

Mais de karlalopezbello

03 -fundamentos_de_la_tecnologia_orientada_a_objetos
03  -fundamentos_de_la_tecnologia_orientada_a_objetos03  -fundamentos_de_la_tecnologia_orientada_a_objetos
03 -fundamentos_de_la_tecnologia_orientada_a_objetoskarlalopezbello
 
02 -introduccion_a_la_tecnologia_orientada_a_objetos
02  -introduccion_a_la_tecnologia_orientada_a_objetos02  -introduccion_a_la_tecnologia_orientada_a_objetos
02 -introduccion_a_la_tecnologia_orientada_a_objetoskarlalopezbello
 
Programacion ii modulo3-leccion2
Programacion ii modulo3-leccion2Programacion ii modulo3-leccion2
Programacion ii modulo3-leccion2karlalopezbello
 
Programacion ii modulo3-leccion1
Programacion ii modulo3-leccion1Programacion ii modulo3-leccion1
Programacion ii modulo3-leccion1karlalopezbello
 
Programacion ii modulo2-leccion3
Programacion ii modulo2-leccion3Programacion ii modulo2-leccion3
Programacion ii modulo2-leccion3karlalopezbello
 
Programacion ii modulo2-leccion2
Programacion ii modulo2-leccion2Programacion ii modulo2-leccion2
Programacion ii modulo2-leccion2karlalopezbello
 
Programacion ii modulo2-leccion1
Programacion ii modulo2-leccion1Programacion ii modulo2-leccion1
Programacion ii modulo2-leccion1karlalopezbello
 
Programacion ii modulo1-leccion1-
Programacion ii modulo1-leccion1-Programacion ii modulo1-leccion1-
Programacion ii modulo1-leccion1-karlalopezbello
 
Sistemas de comunicacion
Sistemas de comunicacionSistemas de comunicacion
Sistemas de comunicacionkarlalopezbello
 
Introduccion unegvirtual
Introduccion unegvirtualIntroduccion unegvirtual
Introduccion unegvirtualkarlalopezbello
 
Guia para montar_el_aula_1_
Guia para montar_el_aula_1_Guia para montar_el_aula_1_
Guia para montar_el_aula_1_karlalopezbello
 
Configuracion del perfil
Configuracion del perfilConfiguracion del perfil
Configuracion del perfilkarlalopezbello
 
Configuracion del perfil
Configuracion del perfilConfiguracion del perfil
Configuracion del perfilkarlalopezbello
 

Mais de karlalopezbello (20)

03 -fundamentos_de_la_tecnologia_orientada_a_objetos
03  -fundamentos_de_la_tecnologia_orientada_a_objetos03  -fundamentos_de_la_tecnologia_orientada_a_objetos
03 -fundamentos_de_la_tecnologia_orientada_a_objetos
 
02 -introduccion_a_la_tecnologia_orientada_a_objetos
02  -introduccion_a_la_tecnologia_orientada_a_objetos02  -introduccion_a_la_tecnologia_orientada_a_objetos
02 -introduccion_a_la_tecnologia_orientada_a_objetos
 
Programacion ii modulo3-leccion2
Programacion ii modulo3-leccion2Programacion ii modulo3-leccion2
Programacion ii modulo3-leccion2
 
Programacion ii modulo3-leccion1
Programacion ii modulo3-leccion1Programacion ii modulo3-leccion1
Programacion ii modulo3-leccion1
 
Programacion ii modulo2-leccion3
Programacion ii modulo2-leccion3Programacion ii modulo2-leccion3
Programacion ii modulo2-leccion3
 
Programacion ii modulo2-leccion2
Programacion ii modulo2-leccion2Programacion ii modulo2-leccion2
Programacion ii modulo2-leccion2
 
Programacion ii modulo2-leccion1
Programacion ii modulo2-leccion1Programacion ii modulo2-leccion1
Programacion ii modulo2-leccion1
 
Programacion ii modulo1-leccion1-
Programacion ii modulo1-leccion1-Programacion ii modulo1-leccion1-
Programacion ii modulo1-leccion1-
 
Didactica del chat
Didactica del chatDidactica del chat
Didactica del chat
 
Didactica del foro
Didactica del foroDidactica del foro
Didactica del foro
 
Guia completa de_moodle
Guia completa de_moodleGuia completa de_moodle
Guia completa de_moodle
 
Publicacion de material
Publicacion de materialPublicacion de material
Publicacion de material
 
Sistemas de comunicacion
Sistemas de comunicacionSistemas de comunicacion
Sistemas de comunicacion
 
Actividades en moodle
Actividades en moodleActividades en moodle
Actividades en moodle
 
Plataforma moodle
Plataforma moodlePlataforma moodle
Plataforma moodle
 
Introduccion unegvirtual
Introduccion unegvirtualIntroduccion unegvirtual
Introduccion unegvirtual
 
Guia para montar_el_aula_1_
Guia para montar_el_aula_1_Guia para montar_el_aula_1_
Guia para montar_el_aula_1_
 
Configuracion del perfil
Configuracion del perfilConfiguracion del perfil
Configuracion del perfil
 
Configuracion del perfil
Configuracion del perfilConfiguracion del perfil
Configuracion del perfil
 
Transparencias7
Transparencias7Transparencias7
Transparencias7
 

Recursividad en programación

  • 1. Presentación Recursión Mauricio Paletta INGENIERÍA EN INFORMÁTICA Programación II Coordinación General de Pregrado UNIVERSIDAD NACIONAL EXPERIMENTAL DE GUAYANA Programación II
  • 2. Definición Recursión es el fenómeno mediante el cual algo (proceso / estructura) se puede definir en términos de sí mismo. Un proceso es recursivo cuando en el cuerpo de su definición se encuentra una llamada al mismo proceso. Una estructura es recursiva cuando la misma estructura es parte de su definición. Programación II
  • 3. Definición NOTA: La clave para entender recursión es saber diferenciar / identificar lo que se está definiendo (el problema) de la definición. Luego, colocar en la definición lo que se está definiendo permite dar una definición recursiva del problema. Programación II
  • 4. Proceso recursivo En términos algorítmicos, un proceso recursivo es una función / procedimiento que tiene una llamada a la misma función / procedimiento en su bloque de instrucciones. NOTA: La mejor manera de codificar un proceso recursivo es obtener primero la definición recursiva del problema. Programación II
  • 5. Proceso recursivo NOTA: Todos los problemas tienen tanto una definición recursiva como una no recursiva. A veces no es trivial encontrar una a partir de la otra. Algunos problemas son más fáciles de codificar de forma recursiva. Entender / usar recursión es muy importante en estos casos. Programación II
  • 6. Proceso recursivo Si un proceso recursivo se llama a sí mismo tiene que parar en algún momento (caso contrario hay un proceso “infinito” de acumulaciones de llamadas, hasta que los recursos computacionales lo permitan). Quiere decir que es necesario identificar una condición de parada de la recursión. Programación II
  • 7. Proceso recursivo En resumen, para codificar un proceso de manera recursiva se requiere dos cosas: 1) Tener la definición recursiva del problema. 2) Identificar la condición de parada (por lo general es lo primero que se hace). Programación II
  • 8. Proceso recursivo Ejemplo: Factorial de un número. Definición no recursiva: Fac(N) = N x (N-1) x (N-2) x … x 1 Lo que se La está definición definiendo Programación II
  • 9. Proceso recursivo Ejemplo: Factorial de un número. Definición no recursiva: Fac(N) = N x (N-1) x (N-2) x … x 1 Lo que se La está definición definiendo Programación II
  • 10. Proceso recursivo Ejemplo: Factorial de un número. Definición no recursiva: Fac(N) = N x (N-1) x (N-2) x … x 1 Lo que se La está definición definiendo Programación II
  • 11. Proceso recursivo Fac(5) = 5 x 4 x 3 x 2 x 1 Nótese que: Fac(4) = 4 x (3) x (2) x 1 Entonces: Fac(5) = 5 x Fac(4) Programación II
  • 12. Proceso recursivo Definición recursiva: Fac(N) = N x Fac(N-1) Lo que se Lo que se está definiendo está está dentro de la definición definiendo Condición Fac(1) = Fac(0) = 1 de parada Programación II
  • 13. Proceso recursivo Programación II
  • 14. Proceso recursivo Ejemplo: Término de Fibonacci. Definición no recursiva: Fib(N) = 0, 1, 1, 2, 3, 5, 8, 13, … Lo que se La está definición definiendo Programación II
  • 15. Proceso recursivo Fib(8) = 13 Nótese que: 13 = 5 + 8 = Fib(6) + Fib(7) Entonces: Fib(8) = Fib(6) + Fib(7) Programación II
  • 16. Proceso recursivo Definición recursiva: Fib(N) = Fib(N-2) + Fib(N-1) Lo que se Lo que se está definiendo está está dentro de la definición definiendo Fib(1) = 0 Condición Fib(2) = 1 de parada Programación II
  • 17. Proceso recursivo Programación II
  • 18. Proceso recursivo Ejemplo: Torres de Hanoi para N discos. 1) Un disco no puede colocarse sobre otro disco de tamaño menor. 2) Sólo puede moverse un disco a la vez. Programación II
  • 19. Proceso recursivo Lo que se está definiendo: mover N discos de un poste a otro. Problema: mover N discos del poste 1 al poste 3. Definición recursiva: mover N-1 discos del poste 1 al poste 2; mover disco N del poste 1 al poste 3; mover N-1 discos del poste 2 al poste 3. Programación II
  • 20. Proceso recursivo Este es del tipo de problema muy difícil de resolver utilizando una estrategia diferente a la recursión. Utilizando la recursión el problema se resuelve muy simple, basta seguir la lectura de la definición. Nótese la complejidad del problema cuando N crece. Programación II
  • 21. Proceso recursivo Programación II
  • 22. Proceso recursivo Programación II
  • 23. Proceso recursivo Programación II
  • 24. Estructura recursiva Ocurre cuando uno de los campos o atributos de la estructura (por ejemplo una clase) coincide con el mismo tipo de la estructura que se está definiendo. También puede darse con direcciones de memoria o apuntadores para definir estructuras de datos no lineales (es lo más común). Programación II