Programa fatorial mais rápido em JavaScript

Sahil Bhosale 12 outubro 2023
  1. Programa fatorial usando recursão em JavaScript
  2. Programa fatorial usando iteração em JavaScript
  3. Programa fatorial mais rápido em JavaScript
Programa fatorial mais rápido em JavaScript

O programa fatorial é usado para encontrar os fatores de um determinado número. Por exemplo, os fatores do número 8 são 1, 2, 4 e 8. Os fatores de ambos os números 0 e 1 são sempre 1. Da mesma forma, todo número tem alguns números fatoriais.

Existem duas maneiras de escrever um programa fatorial em JavaScript, uma forma é usando recursão e outra forma é usando iteração. Chamaremos esses dois programas 1000 vezes usando o loop for(), e cada vez que chamarmos esse programa, encontraremos o fatorial do número 1000.

Vamos ver as duas formas em detalhes e depois veremos qual é o programa fatorial mais rápido.

Programa fatorial usando recursão em JavaScript

O método recursivo é uma forma de escrever o programa fatorial. Na recursão, chamamos a mesma função repetidamente com alguma condição básica. A condição básica garante que não entremos em um loop infinito.

Para verificar o tempo que leva para executar o programa recursivo, usamos o método getItem() do objeto Date. A variável start armazenará a hora em que o programa inicia sua execução e a end armazenará a hora em que o programa conclui sua execução.

Como sabemos, o fatorial de um número zero é 1. Então, faremos desta nossa condição base, e assim que um número se tornar zero, ele retornará 1. Caso contrário, continuaremos encontrando o fatorial desse número chamando a mesma função fatorial repetidamente até chegarmos a 0. A implementação do programa fatorial usando recursão é mostrada abaixo.

let start, end;
start = new Date().getTime();

for (var i = 0; i < 10000; i++) recursionFactorial(1000)

  function recursionFactorial(num) {
    if (num === 0)
      return 1;
    else
      return num * recursionFactorial(num - 1);
  }

end = new Date().getTime();

console.log(end);

Produção:

1627808767415

A saída mostrada acima é o tempo em que o programa recursivo completa sua execução, que também é armazenado na variável fim. O tempo está em milissegundos e é impresso na janela do console do navegador.

Programa fatorial usando iteração em JavaScript

Outra maneira de escrever um programa fatorial é usando iteração. Na iteração, usamos loops como loops for, while ou do-while.

Aqui também verificaremos o tempo que leva para executar o programa iterativo usando o método getItem() do objeto Date. A variável start2 armazenará a hora em que o programa inicia sua execução e a end2 armazenará a hora em que o programa iterativo conclui sua execução.

Na função iterationFactorial(), inicialmente definimos o contador para 1 e, em seguida, usamos um loop for para encontrar os fatores incrementando a variável counter. No final, retornamos o valor da variável counter.

let start2, end2;
start2 = new Date().getTime();

for (var i = 0; i < 10000; i++) iterationFactorial(1000);

function iterationFactorial(num) {
  var counter = 1;
  for (var i = 2; i <= num; i++) counter = counter * i;
  return counter;
}

end2 = new Date().getTime();

console.log(end2);

Produção:

1627808727136

A saída mostrada acima é o momento em que o programa termina, o programa de iteração completa sua execução, que também é armazenado na variável end2. O tempo está em milissegundos e é impresso na janela do console do navegador.

Programa fatorial mais rápido em JavaScript

Agora que vimos o programa de recursão e iteração para encontrar o fatorial de um número. Vamos agora verificar o resultado final (ou seja, o tempo gasto para executar esses dois programas) para ver qual desses dois programas fatoriais é mais rápido.

Já armazenamos a hora de início e fim do programa de recursão nas variáveis start e end e a hora do programa de iteração nas variáveis ​​start2 e start2. Agora temos que subtrair o horário de término do horário de início para obter o tempo resultante em milissegundos.

let res1 = end - start;
let res2 = end2 - start2;

console.log('res1: ' + res1 + ' res2: ' + res2)

Produção:

res1: 1626 res2: 27

Os resultados finais mostram que o programa de recursão leva muito mais tempo do que o programa de iteração. Portanto, em JavaScript, o programa fatorial de iteração é o mais rápido. Esta saída pode variar dependendo do sistema no qual você executará este programa.

Sahil Bhosale avatar Sahil Bhosale avatar

Sahil is a full-stack developer who loves to build software. He likes to share his knowledge by writing technical articles and helping clients by working with them as freelance software engineer and technical writer on Upwork.

LinkedIn