miércoles, 2 de noviembre de 2011

RECURSIVIDAD

RECURSIVIDAD.
Es aquella propiedad que posee un método por el cual puede llamarse asi mismo.
Un método que tiene sentencias entre las que se encuentran al menos una que llama al propio método.

RECURSIVIDAD
Método 1(….)
{
      ……
     Método1 ();
}
NO RECURSIVIDAD
Método 1() {
………..
}
Método 2(…) {
……
Método 1();
}
APLICACIONES.
La suma de los n primeros números positivos:
5(6)=5(6)+5(5)+5(4)+5(3)+5(2)+5(1)

            SERIE DE FIBONACCI
Esta serie inicia con 1 y 0 y tiene la propiedad que cada elemento es la suma de los 2 elementos anteriores.
Ejemplo
0+1=1
1+1=2
2+1=3
3+2=5
5+3=8
Entonces se puede establecer que:
Fibonacci (0)=0
Fibonacci (1)=1
Fibonacci (n)=Fibonacci (n-1)+Fibonacci(n-2)
METODO RECURSIVO
Es un método que se invoca a si mismo de forma directa e indirecta.
Una definición recursiva debe incluir una condición de salida , que se denomina componente base, en el que f(n) se defina directamente para uno o mas valores de n.
Un requisito para que un algoritmo recursivo sea correcto es que no genere una secuencia infinita de llamadas sobre si mismo.
RECURSIVIDAD DIRECTA.
El código de f() contiene una sentencia que invoca a f().
Ejemplo
Método  f(){
Método f();
}
RECURSIVIDAD INDIRECTA.
La recursividad indirecta se da cuando un método llama a otro , que eventualmente terminara llamando de nuevo al primer método.
Ejemplo
Método f(){
Método g();
}
Método g(){
Método f();
}
RECURSION VS ITERACION
Estructura                                   Estructura
Control                                         control
Selección                                      repetitiva
PROGRAMAS
public class fibonacci {
    public int fibonaci (int n, int fibinf, int fibsup)
    {
        Scanner teclado = new Scanner (System.in);
        System.out.println("Ingrese el numero: ");
        n= teclado.nextInt ();
        System.out.println("----------------");
        if ((n==0)||(n==1))
        {
            System.out.println("La suma es: "+ n);
            return n;
        }
        fibinf=0;
            fibsup=1;
        for (int i=2; i<n; i++){
            int x;
            x=fibinf;
            fibinf=fibsup;
            fibsup=x+fibinf;
            System.out.println(""+fibsup);
        }
        return (fibsup);
    }
        public static void main(String[] args){
                fibonacci fb = new fibonacci ();
                int n=0, fibinf =0, fibsup = 1;
                fb.fibonaci(n,fibinf, fibsup);
public class factorial {
     public static double n,h;
    public static double factorial(double n){
        if(n==0){
            return 1;}
 else h=1;
        return n*factorial(n-1);
    }
            public static void main(String[] args) {
                System.out.println("¿Cual es el numero? ");
                Scanner cap = new Scanner (System.in);
                n= cap.nextInt();
                if (n==0){
                    System.out.println("\nFactorial: 1");
                }
                factorial f=new factorial();
                f.factorial(n);
                if(h==1){
                    System.out.println("\nFactorial= "+n*factorial (n-1));}
                }

        }
public class Recursividad {
    public boolean positivo(int n){
        if(n<=0)
            return true;
        else
            return negativo(n);
    }
    public boolean negativo(int n){
        if(n<0)
            return false;
        else
            return positivo(n);
    }
    public static void main(String[]args){
        Recursividad rec=new Recursividad();
        Scanner Teclado=new Scanner(System.in);
        int m;
        System.out.println("Ingrese valor");
        m=Teclado.nextInt();
        System.out.println(rec.positivo(m));
    }

}
          

No hay comentarios:

Publicar un comentario