Recursividad
Upcoming SlideShare
Loading in...5
×
 

Recursividad

on

  • 3,355 views

 

Statistics

Views

Total Views
3,355
Views on SlideShare
3,318
Embed Views
37

Actions

Likes
1
Downloads
77
Comments
0

2 Embeds 37

http://mluisavel.wordpress.com 33
http://www.slideshare.net 4

Accessibility

Categories

Upload Details

Uploaded via as Microsoft PowerPoint

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

Recursividad Recursividad Presentation Transcript

  • Recursividad María Luisa Velasco Ramírez
  • Definición • Cualquier proceso puede ser definido de forma iterativa y de forma recursiva. – Un proceso iterativo es aquél que requiere de la repetición explícita de cierta acción. – Un proceso es recursivo si está definido total o parcialmente en términos de sí mismo.
  • Ejemplo Matrushka • La Matrushka es una artesanía tradicional rusa. Es una muñeca de madera que contiene otra muñeca más pequeña dentro de sí. Esta muñeca, también contiene otra muñeca dentro. Y así, una dentro de otra. 3
  • • Para calcular 4!, por ejemplo, se puede utilizar un proceso iterativo o uno recursivo. • De manera iterativa: • 4! = 1 * 2 * 3 * 4 = 24
  • • Para definir 4! de manera recursiva se tiene que definirlo en términos de factorial, es decir, en la definición (parte derecha de la igualdad) tiene que aparecer el factorial. • De manera recursiva: »4! = 4 * 3!
  • • Se observa que en el cálculo de 4! fue muy importante el hecho de que 0! es igual a 1 ¿Qué hubiera pasado si 0! se calculará como se calculó los demás factoriales? Nunca se hubiera terminado el proceso, o sea, tendríamos un proceso infinito.
  • • Entonces, toda definición recursiva debe tener, al menos, una definición base. Esta definición base proporciona la solución de salida de la recursividad.
  • • Para calcular 4!, 3!, 2! y 1! Se uso una definición recursiva, por lo que se estuvo entrando en recursión y cuando se alcanzó la definición base se comenzó a salir de recursión.
  • 10
  • • Conclusiones: – Un proceso es recursivo si está definido total o parcialmente es términos de sí mismo. – Todo proceso recursivo debe tener, al menos: una definición base y una definición recursiva.
  • Diseño e implementación de algoritmos recursivos. • La solución recursiva a un problema de repetición se obtiene respondiendo dos preguntas: – 1. ¿Cómo se resuelve el caso más pequeño del problema? – La respuesta a esta pregunta debe ser no- recursiva y plantear una condición de salida, es decir, proporcionar la definición base.
  • • En el cálculo de factorial, la pregunta sería: ¿cuál es el número más pequeño para el que se puede obtener factorial? • 2. ¿Cómo se resuelve un caso general del problema, sabiendo que ya se tiene el caso anterior más pequeño?
  • • De tal forma que, la definición recursiva de n! es: – a) n! = 1 si n = 0 Definición base – b) n! = n * (n – 1)! si n > 0 Definición recursiva
  • • Dependiendo del problema que implemente el módulo éste diagrama se puede ver modificado. • Por ejemplo, si tiene más de una definición base, si tiene más de una definición recursiva o si en la solución recursiva tiene que realizar alguna operación antes de volverse a ejecutar o no.
  • Implementación de la función recursiva
  • La importancia del return en una función • 1o. Hace que la función tome el valor de lo que se está regresando. En factorial: si n == 0 factorial = 1 sino factorial= n * factorial(n – 1)
  • • 2o. Termina la ejecución de la función, regresando el control de la ejecución al módulo en que fue llamada (a la instrucción que se debe ejecutar después de que la función fue llamada).
  • Conclusiones • La solución recursiva de un problema se obtiene respondiendo dos preguntas: ¿cómo se resuelve el caso más pequeño? y ¿cómo se resuelve un caso general, sabiendo que ya se tiene el caso anterior más pequeño? • Para implementar soluciones recursivas se utilizan los módulos: las funciones (int, float, double, etc.).
  • • El return de una función realiza dos operaciones: asigna a la función el valor que regresa y termina la ejecución de la misma, regresando el control a la siguiente instrucción que se tiene que realizar, después de la llamada a la función.
  • Otro ejemplo • public static void imprimeNaturales(int n) • { • if (n == 1) • System.out.println(“1”); • else • { • System.out.println(n); • imprimeNaturales(n – 1); • } _________________________________ 2 • } • public static void main(String args[]) • { • …. • imprimeNaturales(5); • System.out.println(“Fin del proceso”); ______ 1 • }
  • • Considerar un ejemplo más, la serie de los números de Fibonacci cuya definición ya se nos da de manera recursiva. Vamos a escribir su implementación y posteriormente haremos la representación de la pila. – F0 = 1 – F1 = 1 – Fn = Fn -1 + Fn – 2 si n > 1
  • ¿Cuándo usar recursividad? • Para simplificar el código. • Cuando la estructura de datos es recursiva ejemplo : árboles. ¿Cuándo no usar recursividad? • Cuando los métodos usen arreglos largos. • Cuando el método cambia de manera impredecible de campos. • Cuando las iteraciones sean la mejor opción. 27
  • Algunas Definiciones. • Cuando un procedimiento incluye una llamada a sí mismo se conoce como recursión directa. 28
  • Algunas Definiciones. • Cuando un procedimiento llama a otro procedimiento y éste causa que el procedimiento original sea invocado, se conoce como recursión indirecta. NOTA: Cuando un procedimiento recursivo se llama recursivamente a si mismo varias veces, para cada llamada se crean copias independientes de las variables declaradas en el procedimiento. 29