Javascript
 Computer >> コンピューター >  >> プログラミング >> Javascript

JavaScriptでの再帰的およびループ階乗関数のパフォーマンスの比較


2つのJavaScript関数を記述します。両方の関数の仕事は、数値を取り込んでその階乗を返すことです。

最初の関数は、階乗を計算するためにforループまたはwhileループを使用する必要があります。一方、2番目の関数は、再帰的アプローチを使用して階乗を計算する必要があります。

最後に、これらの関数が多数の反復で費やした時間を比較する必要があります。

以下はコードです-

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

かかる時間はマシンごとに異なりますが、比率はほぼ同じままである必要があります。


  1. JavaScriptの関数とメソッドの違いは何ですか?

    JavaScriptでも関数とメソッドは同じですが、メソッドはオブジェクトのプロパティである関数です。 以下はJavaScriptの関数の例です- function functionname(param1, param2){    // code } 例 メソッドはオブジェクトに関連付けられた関数です。以下はJavaScriptのメソッドの例です- <html>    <head>       <script>          var e

  2. JavaScriptの破壊と関数パラメータ

    以下は、JavaScriptで関数パラメーターを分解するコードです- 例 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" /> <title>Document</title> <style>