sábado, 2 de noviembre de 2013

Recursividad 
Aplicaciones.

Las aplicaciones donde se pueden aplicar la  recursividad son:

Recorrido de estructuras no lineales

Formulas matemáticas: se puede aplicar la  recursividad en un algoritmo para una formula matemática donde el proceso iterativo es muy complejo un ejemplo de estos algoritmos es:

Crear una función en java donde se pueda calcular el factorial de un numero entero mayor o igual a cero.

Las  funciones recursiva son realizadas de la siguiente manera.
acceso modificador tipo/clase nombreMetodoRecursivo (parámetros) {
      if(condición para detener autollamado)
       // instrucciones
       nombreMetodoRecursivo (argumentos); // autollamado
}

Para realizar esta función o método debemos tener en cuenta que el factorial de un numero es otro numero que resulta de la siguiente formula n!=n*(n-1)! donde n es el numero y el carácter "!" tiene como significado factorial mediante un ejemplo tendremos mas claridad sobre el factorial. ejemplo: factorial de 5 : 5! = 5*4!   4!=4*3!;  3!=3*2!;  2!=2*1!;  1!=1*0!;  0!=1.

Remplazando cada factorial tenemos que 1!=1*0! = 1;  2!= 2*1! = 2;  3!=3*2!= 6;  4!=4*3!=24;  5! = 5*4! = 120. Como resultado final obtenemos 120, quiere decir que el factorial de 5 es 120.



Analizando el  método recursivo mediante la siguiente figura.

Figura numero 11

La pila anterior ilustrada en la Figura numero 11 es la que almacena las instrucciones pendientes por realizar, la primera llamada del método realizada en el método main fue de 5 este quedo a la espera del llamado que ahora se realizo con (num-1) y así con las demás llamadas hasta que n valga cero y retorne 1 para luego realizar las instrucción pendientes que se encuentran en la pila interna del sistema operativo.

Ejercicios, funciones recursivas para:
1. calcular potenciacion entre dos numero naturales.
2. mostrar los elementos de una lista enlazada simple (invertida).



En la clase anterior se muestran los dos métodos el primero es casi igual al ejemplo de el factorial siendo que   recibe dos parámetros el cual uno es la base y el otro es el exponente. El segundo método recibe una lista y no retorna,  lo que primero que se hace es poner la condición del autollamado y en la pila se van guardando las instrucción que quedan pendiente como son el System.out.println() de cada dato que tiene la lista, cuando termina el autollamado la pila interna del sistema operativo realiza las instrucciones que tiene almacenada.  



Apreciaciones importantes y reflexión.

Como se pudo dar cuenta en el  método recursivo anterior nos facilita la solución una formula matemática, y en pocas lineas de código, que realizada iterativa mente resultaría un poco mas compleja. Recordemos que los métodos recursivo tienen considerable consumo de memoria.

No hay comentarios:

Publicar un comentario