Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
Solucionado (ver solución)
Solucionado
(ver solución)
2
respuestas

No puedo entender desafio 2

Buena tarde,

En la solución no entiendo si funciona como un bucle para tomar todos los valores (o ya que es tema de listo, donde se guarda si no hay una lista declarada) y que papel cumple el llamar la función dentro de la misma función, es decir, si por ejemplo let a=4 entonces la función toma los valores de 4,3,2 y los multiplica pero no se porque ni como lo hace para que al final me diga que el factorial de 4 es 24

function numFact(a) {
    if (a === 0 || a === 1) { //como el factorial de 0 y 1 es 1 retorna a la función el valor de 1
        return 1;
    } else {
        return a * numFact(a - 1); //COMO FUNCIONA Y PORQUE LLAMA LA FUNCION DENTRO DE LA MISMA FUNCIÓN
    }
}

Agradezco si me ayudan a salir de la duda :)

2 respuestas
solución!

¡Hola Juan!

Entiendo que tengas dudas sobre cómo funciona el desafío 2, específicamente sobre cómo se calcula el factorial de un número utilizando una función recursiva.

En el código que compartiste, la función numFact toma un número a como parámetro y calcula su factorial. La recursividad es una técnica en la que una función se llama a sí misma dentro de su propia definición. En este caso, la función numFact se llama a sí misma para calcular el factorial de a - 1.

El caso base de la recursión se encuentra en la primera línea del código: if (a === 0 || a === 1). Si a es igual a 0 o 1, la función retorna 1, ya que el factorial de 0 y 1 es 1.

Si a es distinto de 0 y 1, la función se llama a sí misma con el argumento a - 1 y multiplica el resultado por a. Por ejemplo, si llamas a la función numFact(4), se realizarán las siguientes llamadas recursivas:

numFact(4) -> 4 * numFact(3) -> 4 * (3 * numFact(2)) -> 4 * (3 * (2 * numFact(1))) -> 4 * (3 * (2 * 1))

Finalmente, la función retorna el resultado del cálculo: 4 * 3 * 2 * 1 = 24, que es el factorial de 4.

La recursividad es una técnica poderosa y elegante, pero puede resultar confusa al principio. Te recomiendo que pruebes el código con diferentes valores de a para comprender mejor cómo funciona. Por ejemplo, puedes probar numFact(5) o numFact(6).

Espero haber aclarado tus dudas. Si tienes alguna pregunta adicional, no dudes en hacerla. ¡Estoy aquí para ayudarte!

Espero haber ayudado y buenos estudios!

Si este post te ayudó, por favor, marca como solucionado ✓. Continúa con tus estudios!

Hola buenos días, tardes o noches compañero!!

A mi me funciona el poder "reasignar la variable" , te dejare el código para que vayas haciendo las pruebas.

function datum(){
    numFact = parseInt(prompt('Ingresa el número a calcular el factorial'));
    let i = numFact;
    let j = i;
    while (i > 1){
        i = i - 1;
        console.log(i);
        numFact = numFact * i;
        console.log(numFact);
    }
    alert(`el factorial de ${j}! = ${numFact}`);
}