Presentación                Recursión          Mauricio Paletta     INGENIERÍA EN INFORMÁTICA                  Programació...
DefiniciónRecursión es el fenómeno mediante el cualalgo (proceso / estructura) se puede definiren términos de sí mismo.Un ...
DefiniciónNOTA: La clave para entender recursión es saber diferenciar / identificar lo que se está definiendo (el problema...
Proceso recursivoEn términos algorítmicos, un procesorecursivo es una función / procedimiento quetiene una llamada a la mi...
Proceso recursivoNOTA: Todos los problemas tienen tanto una definición recursiva como una no recursiva. A veces no es triv...
Proceso recursivoSi un proceso recursivo se llama a sí mismotiene que parar en algún momento (casocontrario hay un proceso...
Proceso recursivoEn resumen, para codificar un proceso demanera recursiva se requiere dos cosas: 1) Tener la definición re...
Proceso recursivoEjemplo: Factorial de un número. Definición no recursiva:    Fac(N) = N x (N-1) x (N-2) x … x 1  Lo que s...
Proceso recursivoEjemplo: Factorial de un número. Definición no recursiva:    Fac(N) = N x (N-1) x (N-2) x … x 1  Lo que s...
Proceso recursivoEjemplo: Factorial de un número. Definición no recursiva:    Fac(N) = N x (N-1) x (N-2) x … x 1  Lo que s...
Proceso recursivo  Fac(5) = 5 x 4 x 3 x 2 x 1Nótese que:  Fac(4) = 4 x (3) x (2) x 1Entonces:  Fac(5) = 5 x Fac(4)        ...
Proceso recursivoDefinición recursiva:  Fac(N) = N x Fac(N-1)Lo que se       Lo que se está definiendo   está        está ...
Proceso recursivo           Programación II
Proceso recursivoEjemplo: Término de Fibonacci. Definición no recursiva:   Fib(N) = 0, 1, 1, 2, 3, 5, 8, 13, …  Lo que se ...
Proceso recursivo  Fib(8) = 13Nótese que:  13 = 5 + 8 = Fib(6) + Fib(7)Entonces:  Fib(8) = Fib(6) + Fib(7)                ...
Proceso recursivoDefinición recursiva:  Fib(N) = Fib(N-2) + Fib(N-1)Lo que se       Lo que se está definiendo   está      ...
Proceso recursivo           Programación II
Proceso recursivoEjemplo: Torres de Hanoi para N discos.                               1) Un disco no                     ...
Proceso recursivoLo que se está definiendo: mover N discosde un poste a otro.Problema: mover N discos del poste 1 alposte ...
Proceso recursivoEste es del tipo de problema muy difícil deresolver utilizando una estrategia diferentea la recursión.Uti...
Proceso recursivo           Programación II
Proceso recursivo           Programación II
Proceso recursivo           Programación II
Estructura recursivaOcurre cuando uno de los campos o atributosde la estructura (por ejemplo una clase)coincide con el mis...
Estructura recursivaAlgoRecursivo                Programación II
Próxima SlideShare
Cargando en…5
×

Recursion

656 visualizaciones

Publicado el

Recursion - Lenguaje C++

0 comentarios
0 recomendaciones
Estadísticas
Notas
  • Sé el primero en comentar

  • Sé el primero en recomendar esto

Sin descargas
Visualizaciones
Visualizaciones totales
656
En SlideShare
0
De insertados
0
Número de insertados
2
Acciones
Compartido
0
Descargas
11
Comentarios
0
Recomendaciones
0
Insertados 0
No insertados

No hay notas en la diapositiva.

Recursion

  1. 1. Presentación Recursión Mauricio Paletta INGENIERÍA EN INFORMÁTICA Programación II Coordinación General de PregradoUNIVERSIDAD NACIONAL EXPERIMENTAL DE GUAYANA Programación II
  2. 2. DefiniciónRecursión es el fenómeno mediante el cualalgo (proceso / estructura) se puede definiren términos de sí mismo.Un proceso es recursivo cuando en elcuerpo de su definición se encuentra unallamada al mismo proceso.Una estructura es recursiva cuando lamisma estructura es parte de su definición. Programación II
  3. 3. DefiniciónNOTA: 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. 4. Proceso recursivoEn términos algorítmicos, un procesorecursivo es una función / procedimiento quetiene 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. 5. Proceso recursivoNOTA: 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. 6. Proceso recursivoSi un proceso recursivo se llama a sí mismotiene que parar en algún momento (casocontrario hay un proceso “infinito” deacumulaciones de llamadas, hasta que losrecursos computacionales lo permitan).Quiere decir que es necesario identificar unacondición de parada de la recursión. Programación II
  7. 7. Proceso recursivoEn resumen, para codificar un proceso demanera 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. 8. Proceso recursivoEjemplo: 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. 9. Proceso recursivoEjemplo: 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. 10. Proceso recursivoEjemplo: 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. 11. Proceso recursivo Fac(5) = 5 x 4 x 3 x 2 x 1Nótese que: Fac(4) = 4 x (3) x (2) x 1Entonces: Fac(5) = 5 x Fac(4) Programación II
  12. 12. Proceso recursivoDefinición recursiva: Fac(N) = N x Fac(N-1)Lo que se Lo que se está definiendo está está dentro de la definicióndefiniendo Condición Fac(1) = Fac(0) = 1 de parada Programación II
  13. 13. Proceso recursivo Programación II
  14. 14. Proceso recursivoEjemplo: 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. 15. Proceso recursivo Fib(8) = 13Nótese que: 13 = 5 + 8 = Fib(6) + Fib(7)Entonces: Fib(8) = Fib(6) + Fib(7) Programación II
  16. 16. Proceso recursivoDefinición recursiva: Fib(N) = Fib(N-2) + Fib(N-1)Lo que se Lo que se está definiendo está está dentro de la definicióndefiniendo Fib(1) = 0 Condición Fib(2) = 1 de parada Programación II
  17. 17. Proceso recursivo Programación II
  18. 18. Proceso recursivoEjemplo: 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. 19. Proceso recursivoLo que se está definiendo: mover N discosde un poste a otro.Problema: mover N discos del poste 1 alposte 3.Definición recursiva: mover N-1 discos delposte 1 al poste 2; mover disco N del poste1 al poste 3; mover N-1 discos del poste 2al poste 3. Programación II
  20. 20. Proceso recursivoEste es del tipo de problema muy difícil deresolver utilizando una estrategia diferentea la recursión.Utilizando la recursión el problema seresuelve muy simple, basta seguir lalectura de la definición.Nótese la complejidad del problemacuando N crece. Programación II
  21. 21. Proceso recursivo Programación II
  22. 22. Proceso recursivo Programación II
  23. 23. Proceso recursivo Programación II
  24. 24. Estructura recursivaOcurre cuando uno de los campos o atributosde la estructura (por ejemplo una clase)coincide con el mismo tipo de la estructuraque se está definiendo.También puede darse con direcciones dememoria o apuntadores para definirestructuras de datos no lineales (es lo máscomún). Programación II
  25. 25. Estructura recursivaAlgoRecursivo Programación II

×