우리는 두 개의 자바스크립트 함수를 작성할 것입니다. 두 함수의 역할은 숫자를 받아서 팩토리얼을 반환하는 것입니다.
첫 번째 함수는 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
이 시간은 비율이 거의 동일하게 유지되기 때문에 기계마다 다릅니다.