2
respostas

Tive duvidas na atividade do fatorial

Não sabia que em JS poderíamos utilizar recursividade, mas ainda acho que o código está incompleto. E gostaria de saber se alguém fez sem recursividade.

let numero = 10;

function fatorial(numero)
{
    let contador = 1;
    while(contador < numero){
        numero * fatorial(numero -1);
        contador ++;
    }
}

let resultado = fatorial(numero);
2 respostas

Olá, Astor.

Tudo bem?

Entendi que você está com dúvidas sobre como implementar a função de cálculo do fatorial sem usar recursividade. Vou tentar te ajudar com isso!

O fatorial de um número ( n ) (representado como ( n! )) é o produto de todos os números inteiros positivos de 1 até ( n ). Por exemplo, o fatorial de 5 é ( 5! = 5 \times 4 \times 3 \times 2 \times 1 = 120 ).

Aqui está um exemplo de como você pode implementar a função de fatorial em JavaScript sem usar recursividade, utilizando um loop for:

function fatorial(numero) {
    let resultado = 1;
    for (let i = 1; i <= numero; i++) {
        resultado *= i;
    }
    return resultado;
}

let numero = 10;
let resultado = fatorial(numero);
console.log(`O fatorial de ${numero} é ${resultado}`);

Neste código:

  1. A função fatorial recebe um número como parâmetro.
  2. Inicializamos a variável resultado com 1, pois o fatorial de 0 é 1.
  3. Utilizamos um loop for que vai de 1 até o número fornecido.
  4. Em cada iteração, multiplicamos o valor atual de resultado pelo valor de i.
  5. Retornamos o valor final de resultado.

Quando você chama a função fatorial(10), ela retorna o valor 3628800, que é o fatorial de 10.

Espero ter entendido e conseguido ajudar. Qualquer dúvida manda aqui de novo. Bons estudos!

O código que você forneceu contém um erro. A função fatorial é definida, mas não está retornando nenhum valor.

o erro esta na linha:

numero * fatorial(numero - 1);
//Aqui, você está multiplicando numero pelo resultado da chamada recursiva da função fatorial, mas não está atribuindo esse resultado a nenhuma variável.

Para calcular o fatorial corretamente, você pode usar uma abordagem recursiva ou um loop.

Abordagem Recursiva:

let numero = 10
function fatorial(numero) {
    if (numero < 0) {
        return -1; // Valor inválido para fatorial
    } else if (numero === 0) {
        return 1; // Caso base: fatorial de 0 é 1
    } else {
        return numero * fatorial(numero - 1); // Chamada recursiva
    }
}

let resultado = fatorial(numero);
console.log(resultado);

Abordagem com loop:

function fatorial(numero) {
    if (numero < 0) {
        return -1; // Valor inválido para fatorial
    } else if (numero === 0) {
        return 1; // Caso base: fatorial de 0 é 1
    } else {
        let resultado = 1;
        for (let i = 1; i <= numero; i++) {
            resultado = resultado * i;
        }
        return resultado;
    }
}

let resultado = fatorial(numero);
console.log(resultado);