Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Unidad 2

114 views

Published on

TRABAJO DE RECURSIVIDAD.

Published in: Engineering
  • Be the first to comment

  • Be the first to like this

Unidad 2

  1. 1. Unidad 2 Introducción a las estructuras de datos Sandra G. Canche Dzul Jorge Manuel Aké Pech
  2. 2. Recursividad  Recursión es una técnica de programación en el cual un método puede llamarse a sí mismo. La recursión es muy interesante y una técnica efectiva en programación ya que puede producir algoritmos cortos y eficientes.  Algo es recursivo si se define en términos de sí mismo (cuando para definirse hace mención a sí mismo).  Si la invocación de un subprograma (función o subrutina) se produce desde el propio subprograma se dice que se trata de un subprograma recursivo.  Un método recursivo es un método, directa o indirectamente, se hace una llamada a sí mismo.  La recursión consiste en el uso de métodos recursivos.
  3. 3. Procedimientos recursivos Los procedimientos recursivos o recurrentes se pueden clasificar en dos formas distintas: Recursividad directa Recursividad indirecta
  4. 4. Recursividad directa  La recursividad directa se presenta cuando el método se manda llamar a sí mismo dentro de su propio cuerpo de instrucciones. public int Metodo(int n) { : n = Metodo(n-1); }
  5. 5. Recursividad indirecta  La recursividad indirecta se manifiesta cundo un método llama a otro y dentro del segundo se manda llamar al primero. O cuando existe la llamada a métodos de forma encadenada y al terminar el último método llamado, transfiere el control al anterior, hasta llegar al método que inicio la serie de llamadas.  public int Metodo1(int n)  {  :  n = Metodo2(n-1);  }  public int Metodo2(int n)  {  :  n = Metodo1(n-1);  }
  6. 6. Forma de generar la recursividad  Un problema clásico: El factorial de un número.  Todos conocemos que la definición matemática del factorial de un número n se obtiene de la siguiente forma:  n! = 1*2*3*.......*n ó n! = n*(n-1)*(n-2)*.....1  Por definición matemática, también sabemos que:  0! = 1  Con lo que tendríamos la siguiente definición de factorial: n1 1 Si n=0 Caso base n* n-1 otros casos Parte recursiva Un problema que puede resolverse de manera recursiva, debe tener por lo menos caso base y 1 parte recursiva, sino no hay recursión.
  7. 7. Funcionamiento del proceso n Llamado a factorial 4 4*factorial(3) 3 3*factorial(2) 2 2*factorial(1) 1 1*factorial(0) 0 1 En general el proceso es (4*factorial(3*factorial(2*factorial(1*factorial(0)))))
  8. 8.  Realizar de manera recursiva la sumatoria de n números naturales de manera recursiva.  La sumatoria de n números se realiza de la siguiente forma:  n=10  1+2+3+4+5+6+7+8+9+10 = 10+9+8+7+6+5+4+3+2+1   De tal forma que podemos determinar que:  1 si n = 1 paso básico  n + (n-1) si n > 1 paso inductivo o proceso recursivo  //5+suma(4+suma(3+suma(2+suma(1))))
  9. 9. Imprimir de manera recursiva la serie de fibonnaci  La serie de fibonacci trabaja de la siguiente forma:  Paso 1: Si tenemos dos semillas formadas por s1=0 y s1=1  0 1  Paso 2. Se suman para obtener el resultado  0 1 1  Ahora la semilla 1 se queda con el valor de la semilla 2 y el resultado se asigna a la semilla 2 y se vuelve a realizar el paso 2. De tal forma que la serie queda de la siguiente forma:  0 1 1 2 3 5 8 13 21 34 55 89 …………. Fibonnacci de manera recursiva Fibonacci(0,1,21)=1 Fibonacci(1,1,21)=2 Fibonacci(1,2,21)=3 Fibonacci(2,3,21)=5 Fibonacci(3,5,21)=8 Fibonacci(5,8,21)=13 Fibonacci(8,13,21)=21
  10. 10. Realizar de manera recursiva la potencia de un número para n.  El cálculo de la potencia de un número se resuelve de la siguiente manera.  Xp=X*X(p-1)*X(p-2)*X(p-3)……= 25= 2 * 2 * 2 * 2 * 2  Sabemos que 20= 1 por lo que determinamos   1 si p = 0 paso básico  n * (n, p-1) si p > 0 paso inductivo  24 2*potencia(2*potencia(2*potencia(2*potencia(2,0))  Potencia(2,4)=2*potencia(2,3)=16  Potencia(2,3)=2*potencia(2,2)=8  Potencia(2,2)=2*potencia(2,1)=4  Potencia(2,1)=2*potencia(2,0)=2  Potencia(2,0)=1
  11. 11. Realizar el producto de un número por sumas sucesivas de manera recursiva.  El producto de un número (3*9) se realiza de la siguiente forma:  1 2 3 4 5 6 7 8 9  3+3+3+3+3+3+3+3+3   cant =0 0 caso base  n+(cant-1) proceso recursivo 

×