Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

[Dúvida] Fatorial sem for (sugestões de melhoria?)

Eu olhei a resolução do instrutor e foi usado o for, que ainda não foi ensinado no curso. Em outros posts vi pessoas explicando que o for é mais utilizado nesta situação. Só que, como eu ainda não aprendi a usá-lo, eu prefiro usar o que eu já estudei. Com isso, cheguei nesse código:

function calcFatorial(numero) {
    if (numero === 0 || numero === 1) {
        return 1;
    }
    let fatorial = 1;
    let etapas = numero;
    while (etapas > 0) {
        fatorial = fatorial * etapas;
        etapas = etapas - 1;
    }
    return fatorial;
}

let resultado = calcFatorial(5);
console.log(resultado);

Ainda sem usar o for, tem alguma forma de melhorar esse código? Valeu!

1 resposta
solução!

Oi Allan,

Sua implementação do cálculo do fatorial utilizando um loop while está correta e funcional. No entanto, existem algumas melhorias que você pode considerar para tornar seu código mais claro e eficiente.

  1. Uso de Recursão: Uma alternativa ao uso de loops é a recursão. Você pode reescrever a função calcFatorial para que ela chame a si mesma, o que pode tornar o código mais elegante. Aqui está um exemplo:

    function calcFatorial(numero) {
        if (numero === 0 || numero === 1) {
            return 1;
        }
        return numero * calcFatorial(numero - 1);
    }
    
    let resultado = calcFatorial(5);
    console.log(resultado);
    
  2. Validação de Entrada: É sempre bom validar a entrada da função. Você pode adicionar um checagem para garantir que o número seja um inteiro não negativo:

    function calcFatorial(numero) {
        if (numero < 0) {
            return "Número inválido. Informe um número não negativo.";
        }
        if (numero === 0 || numero === 1) {
            return 1;
        }
        return numero * calcFatorial(numero - 1);
    }
    
  3. Naming Conventions: Considere usar nomes de variáveis que deixem claro o que elas representam. Por exemplo, etapas poderia ser renomeado para contador, o que poderia facilitar a compreensão do código.

tux matrix    Caso este post o tenha ajudado, por favor, marcar como solucionado ☑️. Bons Estudos! 🤓