SlideShare una empresa de Scribd logo
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

Más contenido relacionado

PPT
Recursividad
PPT
Recursividad
PPTX
Estructura de Datos: Recursividad
PPTX
Funciones recursivas
PPTX
PPTX
Curso recursividad
Recursividad
Recursividad
Estructura de Datos: Recursividad
Funciones recursivas
Curso recursividad

La actualidad más candente (14)

PPTX
2.1 recursividad
PDF
Ordenacion
PDF
Recursividad
DOC
Unidad 4 est. dat. recursividad
PPTX
Algoritmos recursivos
PPT
Teoría de complejidad computacional (tcc)
PPT
Jflambert lyada - ayudantia matematicas discretas
DOCX
Problema de la ocho reinas. Implementación en Prolog.
PDF
Programacion practica prolog
PDF
Estructura de datos avanzada
PPTX
Enfoques
PDF
Que es complejidad computacional
PDF
Problema de las 8 reinas
PPTX
Teoría de complejidad computacional (tcc).pptx
2.1 recursividad
Ordenacion
Recursividad
Unidad 4 est. dat. recursividad
Algoritmos recursivos
Teoría de complejidad computacional (tcc)
Jflambert lyada - ayudantia matematicas discretas
Problema de la ocho reinas. Implementación en Prolog.
Programacion practica prolog
Estructura de datos avanzada
Enfoques
Que es complejidad computacional
Problema de las 8 reinas
Teoría de complejidad computacional (tcc).pptx
Publicidad

Destacado (9)

PPTX
7.recursividad
DOCX
Recursividad Con C#
PDF
Divide y Vencerás
PDF
Varios Algoritmos Voraces De DecisióN Y OptimizacióN
PPT
Divide y Venceras
PDF
Manual de análisis y diseño de algoritmos
PPT
Estructuras repetitivas
PPS
Estructura selectiva simple
PDF
Algoritmo, Ordenacion y Búsqueda
7.recursividad
Recursividad Con C#
Divide y Vencerás
Varios Algoritmos Voraces De DecisióN Y OptimizacióN
Divide y Venceras
Manual de análisis y diseño de algoritmos
Estructuras repetitivas
Estructura selectiva simple
Algoritmo, Ordenacion y Búsqueda
Publicidad

Similar a Recursion (20)

PPT
Tecnicas de Recursividad_Programacion.ppt
PPT
Recursividad
DOCX
Recursividad
DOCX
Recursividad
PPT
Unidad 2 p1
PPTX
Recursividad 100329105433-phpapp01
PPTX
2 clase 1_recursividad
PPTX
2. Recursividad
PDF
Capítulo 3 Algoritmos recursivos.pdf
PPTX
recursividad.pptx
PPTX
recursividad EN PROGRAMACION ORIENTADA .pptx
PPT
Presentación de Recursividad para Estructuras de datos.ppt
PDF
Programación Orientada a Objetos parte 3
PPTX
RECURSIVIDAD
PPTX
Tarea 3
PPTX
Tarea 3
PPTX
Estructura de dato unidad 2
PPTX
Recursividad
Tecnicas de Recursividad_Programacion.ppt
Recursividad
Recursividad
Recursividad
Unidad 2 p1
Recursividad 100329105433-phpapp01
2 clase 1_recursividad
2. Recursividad
Capítulo 3 Algoritmos recursivos.pdf
recursividad.pptx
recursividad EN PROGRAMACION ORIENTADA .pptx
Presentación de Recursividad para Estructuras de datos.ppt
Programación Orientada a Objetos parte 3
RECURSIVIDAD
Tarea 3
Tarea 3
Estructura de dato unidad 2
Recursividad

Más de karlalopezbello (20)

PDF
03 -fundamentos_de_la_tecnologia_orientada_a_objetos
PDF
02 -introduccion_a_la_tecnologia_orientada_a_objetos
PDF
Programacion ii modulo3-leccion2
PDF
Programacion ii modulo3-leccion1
PDF
Programacion ii modulo2-leccion3
PDF
Programacion ii modulo2-leccion2
PDF
Programacion ii modulo2-leccion1
PDF
Programacion ii modulo1-leccion1-
PDF
Didactica del chat
PDF
Didactica del foro
PDF
Guia completa de_moodle
PDF
Publicacion de material
PDF
Sistemas de comunicacion
PDF
Actividades en moodle
PDF
Plataforma moodle
PDF
Introduccion unegvirtual
PDF
Guia para montar_el_aula_1_
PDF
Configuracion del perfil
DOC
Configuracion del perfil
PDF
Transparencias7
03 -fundamentos_de_la_tecnologia_orientada_a_objetos
02 -introduccion_a_la_tecnologia_orientada_a_objetos
Programacion ii modulo3-leccion2
Programacion ii modulo3-leccion1
Programacion ii modulo2-leccion3
Programacion ii modulo2-leccion2
Programacion ii modulo2-leccion1
Programacion ii modulo1-leccion1-
Didactica del chat
Didactica del foro
Guia completa de_moodle
Publicacion de material
Sistemas de comunicacion
Actividades en moodle
Plataforma moodle
Introduccion unegvirtual
Guia para montar_el_aula_1_
Configuracion del perfil
Configuracion del perfil
Transparencias7

Recursion

  • 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