2
respostas

Exercício fatorial

Estou tentando fazer o exercício de fatorial dessa forma:

//Crie uma função que calcule o valor do fatorial de um número passado como parâmetro. function fatorial(numeroASerFatorado) { while (numeroASerFatorado != 0) { let resultadoFatorial = numeroASerFatorado * (numeroASerFatorado-1); numeroASerFatorado--; return resultadoFatorial;} console.log(O fatorial é ${resultadoFatorial}); } fatorial(8);

Com esse código, não consigo nem que o console.log imprima algo no console. Alguém consegue me dizer onde está o erro?

2 respostas

Oi Luiz! Tudo certo?

Vamos dar uma olhada no seu código para calcular o fatorial. Parece que há alguns pontos que precisam ser ajustados. Vou explicar o que está acontecendo e sugerir algumas correções.

  1. Declaração da variável resultadoFatorial: No seu código, a variável resultadoFatorial está sendo declarada dentro do loop while, o que faz com que ela seja redefinida a cada iteração. Além disso, o cálculo do fatorial está incorreto, pois você está multiplicando apenas dois números e retornando imediatamente o resultado.

  2. Retorno dentro do loop: O return dentro do while faz com que a função termine na primeira iteração, não permitindo que o loop continue para calcular o fatorial corretamente.

  3. Condição do loop: A condição do while deve ser ajustada para calcular o fatorial corretamente até o número 1.

Aqui está uma versão corrigida do seu código:

function fatorial(numeroASerFatorado) {
    let resultadoFatorial = 1; // Inicializa com 1, pois o fatorial de 0 é 1

    while (numeroASerFatorado > 1) { // Continua até que o número seja maior que 1
        resultadoFatorial *= numeroASerFatorado; // Multiplica o resultado pelo número atual
        numeroASerFatorado--; // Decrementa o número
    }

    console.log(`O fatorial é ${resultadoFatorial}`);
    return resultadoFatorial; // Retorna o resultado final
}

fatorial(8);

Nesse código, começamos com resultadoFatorial igual a 1, pois o fatorial de 0 é 1. O loop while continua até que numeroASerFatorado seja maior que 1, multiplicando resultadoFatorial pelo número atual e depois decrementando numeroASerFatorado. Por fim, o resultado é impresso e retornado.

Espero ter ajudado e bons estudos!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓.

Isso ai Armaro barros!