Estoy aprendiendo Java usando el libro Java: The Complete Reference. Actualmente estoy trabajando en el tema Recursión.Factorial usando Recursion en Java
Tenga en cuenta: Hay preguntas similares en stackoverflow. Los busqué pero no encontré la solución a mi pregunta. Estoy confundido con la lógica en el siguiente programa.
Si ejecuto el siguiente programa, produce la salida correcta, pero no entendí la lógica.
- No entendí la lógica en la siguiente línea: resultado = hecho (n-1) * n;
- De mis conocimientos, Si pasamos el valor de n = 4, como se muestra en el siguiente programa,
- A continuación, se almacena 3 * 4 en el resultado, es decir, 12.
- De nuevo, hecho de (n- 1) se llama. Entonces se convierte en n 3.
- A continuación, el 2 * 3 se almacena en el resultado en sustitución del anterior 12.
creo que usted entiende donde estoy atascado hacia arriba/confundido.
Gracias.
class Calculation { int fact(int n) { int result; if(n==1) return 1; result = fact(n-1) * n; return result; } } public class Factorial { public static void main(String args[]) { Calculation obj_one = new Calculation(); int a = obj_one.fact(4); System.out.println("The factorial of the number is : " + a); } }
Mi consejo es que antes de profundizar en Java, primero debe entender las matemáticas detrás de la recursión. Si aún no lo has hecho, este será un muy buen comienzo para ti en.wikipedia.org/wiki/Recursion – GETah
Espero que esto te aclare mucho más http://www.programmerinterview.com/index.php/recursion/explanation-of-recursion/ – Rangesh