JavaScript에서 가장 빠른 팩토리얼 프로그램

Sahil Bhosale 2023년10월12일
  1. JavaScript에서 재귀를 사용하는 팩토리얼 프로그램
  2. JavaScript에서 반복을 사용하는 팩토리얼 프로그램
  3. JavaScript에서 가장 빠른 팩토리얼 프로그램
JavaScript에서 가장 빠른 팩토리얼 프로그램

계승 계획은 주어진 숫자의 인수를 찾는 데 사용됩니다. 예를 들어, 숫자 8의 인수는 1, 2, 4, 8입니다. 숫자 0과 1의 인수는 항상 1입니다. 마찬가지로 모든 숫자에는 일부 계승 수가 있습니다.

JavaScript에서 계승 프로그램을 작성하는 방법에는 두 가지가 있습니다. 하나는 재귀를 사용하는 것이고 다른 하나는 반복을 사용하는 것입니다. for() 루프를 사용하여 이 두 프로그램을 모두 1000번 호출하고 이 프로그램을 호출할 때마다 숫자 1000의 계승을 찾습니다.

두 가지 방법을 자세히 살펴보고 나중에 어떤 것이 가장 빠른 계승 프로그램인지 알아보겠습니다.

JavaScript에서 재귀를 사용하는 팩토리얼 프로그램

재귀적 방법은 계승 프로그램을 작성하는 한 가지 방법입니다. 재귀에서 우리는 몇 가지 기본 조건으로 동일한 함수를 계속해서 호출합니다. 기본 조건은 무한 루프에 빠지지 않도록 합니다.

재귀 프로그램을 실행하는 데 걸리는 시간을 확인하기 위해 Date 객체의 getItem() 메서드를 사용합니다. start 변수는 프로그램이 실행을 시작하는 시간을 저장하고 end는 프로그램이 실행을 완료한 시간을 저장합니다.

아시다시피 숫자 0의 계승은 1입니다. 따라서 이것을 기본 조건으로 설정하고 숫자가 0이 되자마자 1을 반환합니다. 그렇지 않으면 0에 도달할 때까지 동일한 계승 함수를 계속해서 호출하여 해당 숫자의 계승을 계속 찾을 것입니다. 재귀를 이용한 계승 프로그램의 구현은 아래와 같다.

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);

출력:

1627808767415

위에 표시된 출력은 재귀 프로그램이 실행을 완료한 시간이며 end 변수에도 저장됩니다. 시간은 밀리초 단위이며 브라우저의 콘솔 창에 인쇄됩니다.

JavaScript에서 반복을 사용하는 팩토리얼 프로그램

계승 프로그램을 작성하는 또 다른 방법은 반복을 사용하는 것입니다. 반복에서 for, while 또는 do-while 루프와 같은 루프를 사용합니다.

여기에서도 Date 객체의 getItem() 메소드를 사용하여 반복 프로그램을 실행하는 데 걸리는 시간을 확인할 것입니다. start2 변수는 프로그램이 실행을 시작하는 시간을 저장하고 end2는 반복 프로그램이 실행을 완료하는 시간을 저장합니다.

iterationFactorial() 함수에서 처음에 카운터를 1로 설정한 다음 for 루프를 사용하여 counter 변수를 증가시켜 요소를 찾습니다. 결국 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);

출력:

1627808727136

위에 표시된 출력은 프로그램이 반복 프로그램을 종료한 시간이며 end2 변수에도 저장됩니다. 시간은 밀리초 단위이며 브라우저의 콘솔 창에 인쇄됩니다.

JavaScript에서 가장 빠른 팩토리얼 프로그램

이제 우리는 숫자의 계승을 찾는 재귀 및 반복 프로그램을 모두 보았습니다. 이제 최종 결과(이 두 프로그램을 모두 실행하는 데 걸리는 시간)를 확인하여 이 두 가지 요인 프로그램 중 어느 것이 더 빠른지 확인하겠습니다.

재귀 프로그램의 시작 및 종료 시간은 startend 변수에, 반복 프로그램의 시간은 start2end2 변수에 이미 저장되어 있습니다. 이제 시작 시간에서 종료 시간을 빼서 결과 시간을 밀리초 단위로 얻어야 ​​합니다.

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

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

출력:

res1: 1626 res2: 27

최종 결과는 재귀 프로그램이 반복 프로그램보다 훨씬 더 많은 시간이 걸린다는 것을 보여줍니다. 따라서 JavaScript에서는 iteration factorial 프로그램이 가장 빠릅니다. 이 출력은 이 프로그램을 실행할 시스템에 따라 다를 수 있습니다.

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