341
Aprender a programar desde cero / Re:Algoritmo recursivo
« en: 14 de Marzo 2013, 14:52 »
Si llamas por ejemplo al factorial de 5 el proceso es:
Devuelve 5 * factorial (4) entra en primera recursión
factorial (4) devuelve 4 * factorial (3) entra en segunda recursión
factorial (3) devuelve 3 * factorial (2) entra en tercera recursión
factorial (2) devuelve 2 * factorial (1) entra en cuarta recursión
factorial (1) devuelve 1 * factorial (0) entra en quinta recursión
factorial (0) devuelve 1 y termina la quinta recursión que devuelve 1*1
termina la cuarta recursión que devuelve 2*1
termina la tercera recursión que devuelve 3*2*1
termina la segunda recursión que devuelve 4*3*2*1
termina la primera recursión que devuelve 5*4*3*2*1
Si ejecutas esto
El resultado es
Recursión
Recursión
Recursión
Recursión
Recursión
Caso base
Resultado de factorial de 5 es 120
Es decir, cinco recursiones, se llega al caso base y devuelve el resultado
Devuelve 5 * factorial (4) entra en primera recursión
factorial (4) devuelve 4 * factorial (3) entra en segunda recursión
factorial (3) devuelve 3 * factorial (2) entra en tercera recursión
factorial (2) devuelve 2 * factorial (1) entra en cuarta recursión
factorial (1) devuelve 1 * factorial (0) entra en quinta recursión
factorial (0) devuelve 1 y termina la quinta recursión que devuelve 1*1
termina la cuarta recursión que devuelve 2*1
termina la tercera recursión que devuelve 3*2*1
termina la segunda recursión que devuelve 4*3*2*1
termina la primera recursión que devuelve 5*4*3*2*1
Si ejecutas esto
Código: [Seleccionar]
public class prueba {
public static void main (String[] Args){
System.out.println ("Resultado de factorial de 5 es "+ factorial(5));
}
static int factorial (int n){
if (n==0) { System.out.println ("Caso base"); return 1;}
else{
System.out.println ("Recursión");
return n*factorial(n-1);}
}
}
El resultado es
Recursión
Recursión
Recursión
Recursión
Recursión
Caso base
Resultado de factorial de 5 es 120
Es decir, cinco recursiones, se llega al caso base y devuelve el resultado