Imagen Cabezera

Bienvenido !!!  

Recursividad (7-Mayo-27512015)

Propiedad de las funciones (Metodos), para autollamarse.

Utilidad:  Como alternativa a procesos interativos->(for,while,do.while), muy complejos.

Aplicaciones:  Recorrido de estructuras no lineales.




Ventajas:

Recursividad

* Reduce codigo
* Simplifica la logica
* Se da en metodos
* Consumo excesivo de memoria (Por cada autollamado se hace una copia del metodo y se guarda en la pila de llamado a subprogramas del sistema operativo).


Iteracion:

* No reduce codigo
* No simplifica, sino que tiene logica compleja
* No necesariamente en metodos con uso de (for,while,do-while)
* Muy bajo consumo de memoria.


Implementacion:

Iterativo:

Public static tipo nombreMetodo(args){
         _______
         _______
        for ( );
        _______
        _______

        while ( );
        _______
        _______

        do while( );
        _______
        _______


Ejemplo:

factorial
5!= 1x2x3x4x5

public static long factorial (int n){
        long f=1; 
            for (int i=1; i<=n; i++){
                  f*=i;
            }
            return f;
}





Recursivo:

public static nombreMetodo (arg){
         if (condicion para autollamado){
         _______
         _______
         _______
        
         nombre Metodo(arg)
         _______
         _______
}


Ejemplo:

factorial
n!= n*(n-1)!

5! = 5*4! = 120
4! = 4*3! = 24
3! = 3*2! = 6
2! = 2*1! = 2
1! = 1*0! = 1
0! = 1

public static long factorial (int n){
           if (n==0){
                return 1;
           }else{
                    return n*factorial (n-1);
             }
}




No hay comentarios:

Publicar un comentario