Estructura de Datos: Recursividad

28,335 views
28,004 views

Published on

Published in: Education
0 Comments
2 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
28,335
On SlideShare
0
From Embeds
0
Number of Embeds
3
Actions
Shares
0
Downloads
714
Comments
0
Likes
2
Embeds 0
No embeds

No notes for slide

Estructura de Datos: Recursividad

  1. 1. Estructura de Datos 2. Recursividad. http://www.informatik.uni-trier.de/~naeher/Professur/ S
  2. 2. Contenido2.1. Definición2.2. Procedimientos recursivos2.3. Ejemplos de casos U2. Recursividad.
  3. 3. http://codificando-sin-control.blogspot.com/2010/06/la-recursividad.html 2. Recursividad S U2. Recursividad.
  4. 4. 2.1. Definición Alternativa diferente para implementar estructuras de repetición (ciclos). Se apoya en la modularidad, pues a través de los módulos se hacen llamadas recursivas. Un módulo es recursivo si, como parte de su definición, incluye al menos una llamada a sí mismo (Martínez, R. & Quiroga, E., 2001) U2. Recursividad.
  5. 5. 2.1. Definición (cont.) A recursive definition is one that refers to the object it is defining as part of its definition. “A bouquet of roses one rose, or two roses, or three roses, …” (Decker, H., 1993) U2. Recursividad.
  6. 6. 2.1. Definición (cont.) Un método recursivo es un método que se llama así mismo, ya sea directa o indirectamente, a través de otro método. (Deitel, H. M. & Deitel P. J., 2004) Un método parcialmente definido en términos de sí mismo, ya sea directa o indirectamente, a través de otro método. (Weiss, M. A) U2. Recursividad.
  7. 7. 2.1. Definición (cont.) SI NO U2. Recursividad.
  8. 8. 2.2. ProcedimientosRecursivos S TIPOS: S Recursión simple S Recursión múltiple S Recursión cruzada o indirecta S Recursión anidada U2. Recursividad.
  9. 9. 2.3. Ejemplo de Casos S FACTORIAL S ¿Cómo se calcula el factorial de un número? S Ejemplo: S 0!, 1!, 2!, 3!, 4!, 5! U2. Recursividad.
  10. 10. 2.3. Ejemplo de CasosS Factorial (forma iterativa)-- Caso Base factorial = 1; SI-- Parte Recursiva for (int i =n; i >= 1; i --) factorial *= i; U2. Recursividad.
  11. 11. 2.3. Ejemplo de CasosS Factorial (forma recursiva) int factorial (int n){ SI if (n <= 1) return 1; NO else return (n * factorial ( n-1 )); } U2. Recursividad.
  12. 12. Ejercicio S Encuentre el error en el siguiente método recursivo y explique cómo corregirlo: public int suma(int n) { if (n == 0) return 0; else return n + suma (n); } U2. Recursividad.
  13. 13. 2.3. Ejemplo de Casos U2. Recursividad.
  14. 14. 2.3. Ejemplo de Casos U2. Recursividad.
  15. 15. 2.3. Ejemplo de Casos U2. Recursividad.
  16. 16. 2.3. Ejemplo de Casos U2. Recursividad.
  17. 17. 2.3. Ejemplo de Casos U2. Recursividad.
  18. 18. 2.3. Ejemplo de Casos U2. Recursividad.
  19. 19. U2. Recursividad.
  20. 20. 2.3. Ejemplos de casos S FIBONACCI (Leonardo de Pisa) S ¿Cómo se calcula la serie Fibonacci? U2. Recursividad.
  21. 21. 2.3. Ejemplos de casos S FIBONACCI (Leonardo de Pisa) S ¿Cómo se calcula la serie Fibonacci? S Condiciones: S Fibonacci (0) = 0 n=0 S Fibonacci (1) = 1 n=1 S Fibonacci (n) = Fibonacci(n-1)+Fibonacci(n-2) n>1 U2. Recursividad.
  22. 22. 2.3. Ejemplo de Casos U2. Recursividad.
  23. 23. 2.3. Ejemplo de Casos + + + + U2. Recursividad.
  24. 24. 2.3. Ejemplos de casosTriángulo de Pascal 1 11 121 1331 14641 … U2. Recursividad.
  25. 25. 2.3. Ejemplos de casos TRIÁNGULO DE PASCAL int comb(int n, int m) { if ((n == 0) || (n == m)) return 1; else return comb(n-1,m-1) + comb(n-1,m); } U2. Recursividad.
  26. 26. Práctica (Equipo) S De los siguientes problemas resueltos de forma iterativa, encontrar su solución recursiva mediante codificación: 1. Fibonacci (n-1) + (n-2) 2. Conversión de un número decimal a binario (n/2, n%2) 3. Potencia (base, exponente) U2. Recursividad.
  27. 27. Práctica (Equipo)Fibonacci int Fibonacci (int n){ //Casos Base if (n == 0) return 0; else{ if (n == 1) return 1; // Paso recursivo else{ return Fibonacci(n-1)+Fibonacci(n-2); } } } U2. Recursividad.
  28. 28. Práctica (Equipo)Conversión Decimal a Binario void aBinario (int n){ // Paso recursivo if (n >= 2) aBinario (n/2); System.out.print(n%2); } U2. Recursividad.
  29. 29. Práctica (Equipo)Elevar a una potencia int Potencia (int n, int exp){ //Casos Base if (exp == 0) return 1; else{ if (exp == 1) return n; // Paso recursivo else{ return n * Potencia(n, exp-1); } } } U2. Recursividad.
  30. 30. Recursividad & IteraciónRECURSIVIDAD ITERACIÓNS Llamadas repetidas a los S Instrucción de repetición métodos. explícita.S Termina cuando se reconoce unS Termina cuando falla la caso base. condición.S Se aproxima poco a poco a la S Repetición controlada por terminación. contador.S Infinita cuando no reduce el S Infinita cuando la condición problema. nunca se vuelve falsa.S Sobrecarga de llamadas a métodos. U2. Recursividad.
  31. 31. Ventajas S Menos líneas de código. S Refleja el problema con más naturalidad. S Produce un programa más fácil de entender y depurar. U2. Recursividad.
  32. 32. DesventajasS Tiempo de procesador.S Espacio en memoria, consume memoria adicional. U2. Recursividad.
  33. 33. Referencias1. Martínez, R. & Quiroga, E. (2001). Estructura de datos. Referencia práctica con orientación a objetos. Thomson Learning.2. Decker, H. (1993). Working Classes. Data Structures and algorithms using C++. PWS Publishing Company.3. Deitel, H. M. & Deitel P. J. (2004). Cómo programar en JAVA 5ª Edición. Pearson Hall.4. Weiss, M. A. Estructura de datos en Java. Ed. Addison Wesley. U2. Recursividad.
  34. 34. ¡ Gracias por su atención ! www.tecmartinez.edu.mx Tel y Fax: (232) 3.73.52.40 . CP 93600Miguel Hidalgo # 101, Col. Adolfo Ruiz Cortínez . Martínez de la Torre, Veracruz, México. 34

×