miércoles, 31 de agosto de 2011

Recursividad

Recursión
La recursión es un concepto amplio, difícil de precisar. Aparece en numerosas actividades de la vida diaria, por ejemplo, en una fotografía de una fotografía. Otro caso muy ilustrativo de recursión es el que se presenta en los programas de televisión en los cuales un periodista transfiere el control a otro periodista que se encuentra en otra ciudad, y éste hace lo propio con un tercero. Aquí nos limitaremos a estudiar la recursividad desde el punto de vista de programación.
un ejemplo de recursividad pueden ser las muñecas matrioskas,estas es una muñeca de madera que dentro de ella se encuentra una muñeca mas pequeña y dentro de esa se encuentra una muñeca mas pequeña y asi sucesivamente hasta "n" numero de muñecas.

La recursión permite definir un objeto (problemas, estructuras de datos) en términos de sí mismo. Casos típicos de estructuras de datos definidas de manera recursiva son los árboles y las listas ligadas. Algunos ejemplos de problemas que se definen recursivamente son el factorial de un número, la serie de Fibonacci, etc.
Definición de recursividad
Un subprograma que se llama a sí mismo se dice que es recursivo.
Ejemplo de Recursividad
Un ejemplo clasico donde se presenta la recursividad es en la definicion de un factorial: El factorial de N es la multiplicacion de N por el Factorial de N-1.
Sea eso: Factorial(N) = N * Factorial(N-1)
Notese que la definicion de la funcion se realiza en base a si misma. Para que la ejecucion de este codigo sea posible, es necesario definir un caso base, en el caso del factorial seria: Factorial(0) = 1.
De este modo se tiene que:
Factorial(N) = IF(N==0) 1 ELSE N*Factorial(N-1)




aqui esta un ejemplo de recursividad
este programa cuenta hasta diez
resta de 10 a 1
y saca el factorial de 10 numeros

package estructuradedatos;
import javax.swing.JOptionPane;
class recursivo
{
 static int contar(int cuenta)
 {
   if (cuenta<10)
   {
    cuenta++;
    System.out.println(""+cuenta);
    cuenta=contar(cuenta);
   }
  
   return cuenta;
 }

  static int restar(int r)
 {
  if (r>0)
  {
  r--;
  System.out.println(""+r);
  r=restar(r);
  }
  return r;
 }
 static int factorial(int num, int fact)
 {
  if(num>=1)
  {
   fact=fact*(num);
   num--;
   System.out.println(""+fact);
   fact=factorial(num,fact);
  }
  return(num);
 }
 static void ciclo(int n, int f, int i)
 {
  int elige= Integer.parseInt( JOptionPane.showInputDialog(null, "Escribe el numero de tu eleccion:\n1.- contar de 0 a 10\n2.- restar de 10 a 1\n3.-factorial\n5.-salir"));
  switch(elige)
  {
   case 1:
    i=contar(i);
    ciclo(n,f,i);
   break;
  
   case 2:
    i=restar(i);
    ciclo(n,f,i);
   break;
  
   case 3:
    i=factorial(n,f);
    ciclo(n,f,i);
   break;
  
   case 4:
    ciclo(n,f,i);
   break;
  
   case 5:
    System.exit(0);
   break;
  }

 }
 public static void main (String a[])
 {
  int n=10,f=1, i=10;
  ciclo(n,f,i);
 }
}

No hay comentarios:

Publicar un comentario