Programa fatorial mais rápido em JavaScript

  1. Programa fatorial usando recursão em JavaScript
  2. Programa fatorial usando iteração em JavaScript
  3. 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.