우리는 두 개의 자바스크립트 함수를 작성할 것입니다. 두 함수의 역할은 숫자를 받아서 팩토리얼을 반환하는 것입니다.
첫 번째 함수는 for 루프 또는 while 루프를 사용하여 계승을 계산해야 합니다. 반면 두 번째 함수는 재귀 접근 방식을 사용하여 계승을 계산해야 합니다.
마지막으로, 우리는 많은 반복에 걸쳐 이러한 함수에 걸리는 시간을 비교해야 합니다.
예시
다음은 코드입니다 -
const factorial = (num = 1) => { let result = 1; for (let i = 2; i <= num; i += 1) { result *= i; } return result; } const factorialRecursive = (num = 1) => { if(num > 1){ return num * factorialRecursive(num - 1); }else{ return 1; } }; const ITERATIONS = 100000000; const num = 12; console.time('Looping Approach'); for(let i = 0; i < ITERATIONS; i++){ factorial(num); }; console.timeEnd('Looping Approach'); console.time('Recursive Approach'); for(let j = 0; j < ITERATIONS; j++){ factorialRecursive(num); }; console.timeEnd('Recursive Approach');
출력
다음은 콘솔의 출력입니다 -
Looping Approach: 886.720ms Recursive Approach: 6526.203ms
이 시간은 비율이 거의 동일하게 유지되기 때문에 기계마다 다릅니다.