Oi, Nelson, tudo bem?
Eu adaptei a sugestão de código para um formato mais dinâmico, utilizando o html
, vamos ao código:
<!DOCTYPE html>
<html>
<body>
<h1>Calculadora de Fatorial</h1>
<label
>Qual fatorial deseja calcular?<input
class="valor"
type="text"
required=""
/></label>
<button id="button" onclick="fatorial()">Calcula Fatorial</button>
<div id="container"></div>
<script>
function fatorial() {
let valor = parseInt(document.querySelector(".valor").value);
let contador = 1;
for (let i = valor; i > 1; i--) {
contador *= i;
}
document.getElementById("container").innerHTML +=
"<br>" + contador + "<br />";
console.log(contador);
}
</script>
</body>
</html>
O problema do seu código acima era que a variável let num = 0
estava sendo inicializada com 0
, precisamos inicializa-la com um valor maior que 0
:let num = 1
e no momento de fazer a multiplicação para termos o valor do fatorial, que precisa ser: contador = contador * i
ou da forma mais reduzida contador *=1
. Da forma como você fez você está multiplicando duas vezes a variável num
(num =num(i) aqui a variável está pegando o valor de num1 duas vezes e alocando à num).
As demais diferenças no código foi por ter optado por uma tabuada dinâmica, odne o usuário adiciona uma valor desejado dentro do input
, capturamos ele, fazemos o calculos e apresentamos numa div
abaixo.
Espero ter te ajudado!