比較 JavaScript 中遞迴和迴圈階乘函式的效能


我們將編寫兩個 JavaScript 函式,這兩個函式的任務是接收一個數字並返回其階乘。

第一個函式應該使用 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

此時間因機器而異,但比例或多或少保持不變。

更新於:2020-12-10

150 次瀏覽

啟動你的職業

完成課程,獲得認證

開始
廣告