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!