Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
1
respuesta

[Duda] Duda sobre factorial Aula3- Actividad 9

function calcularFactorial(numero) {
  if (numero === 0 || numero === 1) {
    return 1;
  } else {
    return numero * calcularFactorial(numero - 1);
  }
}
// Ejemplo de uso
let numero = 5;
let resultado = calcularFactorial(numero);
console.log(`El factorial de ${numero} es ${resultado}`);

Alguien me podria ayudar a entender mejor el razonamiento de llamar a una misma funcion dentro de la funcion, entiendo la logica de este codigo despues de leer un poco al respecto, pero sigue sin quedarme claro este punto.

1 respuesta

¡Hola! Entiendo que el concepto de recursión puede ser un poco complicado al principio, pero estoy aquí para ayudarte a desglosarlo.

La recursión es una técnica en programación donde una función se llama a sí misma para resolver un problema. En el caso del cálculo del factorial, la recursión es bastante útil porque el factorial de un número se define en términos de factoriales de números menores.

Vamos a desglosar tu función calcularFactorial:

  1. Caso base: La función tiene una condición que detiene la recursión. Aquí, si numero es 0 o 1, la función devuelve 1. Esto se debe a que el factorial de 0 y 1 es 1 por definición.

  2. Llamada recursiva: Si numero no es 0 ni 1, la función se llama a sí misma con el argumento numero - 1. Esto es lo que hace que la función sea recursiva. Cada vez que la función se llama a sí misma, se acerca más al caso base.

  3. Multiplicación acumulativa: La función devuelve el producto de numero y el resultado de calcularFactorial(numero - 1). Esto acumula el resultado del factorial a medida que la función se va "desenrollando" de las llamadas recursivas.

Por ejemplo, si numero es 5, la función sigue estos pasos:

  • calcularFactorial(5) llama a calcularFactorial(4)
  • calcularFactorial(4) llama a calcularFactorial(3)
  • calcularFactorial(3) llama a calcularFactorial(2)
  • calcularFactorial(2) llama a calcularFactorial(1)
  • calcularFactorial(1) llega al caso base y devuelve 1

Luego, las llamadas se resuelven hacia atrás:

  • calcularFactorial(2) devuelve 2 * 1 = 2
  • calcularFactorial(3) devuelve 3 * 2 = 6
  • calcularFactorial(4) devuelve 4 * 6 = 24
  • calcularFactorial(5) devuelve 5 * 24 = 120

Espero que este desglose te ayude a entender mejor cómo funciona la recursión en este contexto. ¡Espero haber ayudado y buenos estudios!