Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

[Dúvida] Não entendi o fatorial

Boa noite pessoal, por gentileza conseguiriam me explicar o que foi feito no código de exemplo? Deixei alguns comentários se puderem ajudar por favor.

function calcularFatorial(numero) { if (numero === 0 || numero === 1) { //qual a lógica em fazer essas comparações, seria para excluir os números "0" e "1", onde não há fatorial? return 1;// porque utilizamos este return? }

let fatorial = 1; for (let i = 2; i <= numero; i++) { fatorial *= i; // neste caso estamos assignando a variável do fatorial para 1, como é incrementado e não decrescida a variável i? }

return fatorial; }

// Exemplo de uso let numero = 5; let resultado = calcularFatorial(numero); console.log(O fatorial de ${numero} é ${resultado});

Agradeço pois fiquei um bom tempo montando o meu mas não deu certo, vão me quebrar um baita galho!

2 respostas
solução!

Olá, Rodolfo.

Pela definição de fatorial:

"Para calcular o fatorial de um número, multiplique o número por todos os seus antecessores até chegar ao número 1.

Exemplos:

4! = 4 · 3 · 2 · 1 = 24

5! = 5 · 4 · 3 · 2 · 1 = 120"

Pelo meu entendimento do código, seriam as seguintes explicações:

if (numero === 0 || numero === 1) // Aqui estamos comparando se o número recebido é 0 OU 1.

return 1; // Caso seja um dos dois, a função irá retornar 1. Isso acontece porque o fatorial de 0 é 1 e o fatorial de 1 também é 1 (por convenção matemática). Ou seja, a função não precisará fazer cálculo.

let fatorial = 1; // Aqui iniciamos o fatorial como 1 porque será o primeiro número que multiplicaremos, igual os exemplos de fatorial lá em cima, só que faremos começando pelo menor número que é o 1.

for (let i = 2; i <= numero; i++); // Depois iremos iniciar o "i" como 2 porque ele representa os próximos números que iremos multiplicar. E como esse número que vamos multiplicar vai aumentando de um em um, agente faz o i++ pra incrementar.

i <= numero // Aqui estamos dizendo pra função iterar até o "i" ser igual ou menor que o número recebido na função.

fatorial *= i // Aqui, a cada iteração iremos multiplicar o fatorial pelo "i" (que vai aumentando, lembra? Começa com 2, depois 3, depois 4, e por aí vai.)

let i = 2 // A iteração começa no 2 porque o primeiro número que multiplicaremos é o fatorial = 1.

Exemplo se o número for 5:

i = 2 → fatorial = 1 * 2 = 2

i = 3 → fatorial = 2 * 3 = 6

i = 4 → fatorial = 6 * 4 = 24

i = 5 → fatorial = 24 * 5 = 120

Não sei se deu pra entender (rs). Mas se tiver ainda dúvidas posso tentar explicar melhor. Abraços!

Muito boa tarde! Nossa sua explicação foi muito clara e perfeita, ontem eu fiquei uma boa hora tentando resolver por conta e mais que isso, entender o que deveria ser estruturado, são pessoas como você que fazem dessa comunidade perfeita para o aprendizado! Espero um dia poder ajudar assim como estou sendo auxiliado! Um forte abraço e boa semana!!! :D