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