Drei Möglichkeiten, eine Zahl in JavaScript zu faktorisieren

Dieser Artikel basiert auf dem Free Algorithmus Camp Basic Algorithm Scripting „Factorialize a Number“.

In der Mathematik kann die Fakultät einer nicht negativen ganzen Zahl n ein schwieriger Algorithmus sein. In diesem Artikel werde ich drei Ansätze erläutern, erstens mit der rekursiven Funktion, zweitens mit einer while-Schleife und drittens mit einer for-Schleife.

Wir haben bereits im vorherigen Artikel einen Rekursionsansatz für einen String gesehen. Wie kann man einen String in JavaScript auf drei verschiedene Arten umkehren? Dieses Mal werden wir das gleiche Konzept auf eine Zahl anwenden.

Algorithmus-Herausforderung

Gibt die Fakultät der angegebenen Ganzzahl zurück.

Wenn die Ganzzahl mit dem Buchstaben n dargestellt wird, ist eine Fakultät das Produkt aller positiven Ganzzahlen kleiner oder gleich n.

Fakultäten werden oft mit der Kurzschreibweise n dargestellt!

Zum Beispiel: 5! = 1 * 2 * 3 * 4 * 5 = 120

 function factorialize(num) { return num; } factorialize(5);

Bereitgestellte Testfälle

  • Fakultät (0) sollte 1 zurückgeben
  • Fakultät (5) sollte 120 zurückgeben
  • Fakultät (10) sollte 3628800 zurückgeben
  • Fakultät (20) sollte 2432902008176640000 zurückgeben

Worum geht es bei der Faktorisierung einer Zahl?

Wenn Sie eine Zahl faktorisieren, multiplizieren Sie diese Zahl mit jeder fortlaufenden Zahl minus eins.

Wenn Ihre Nummer 5 ist, hätten Sie:

5! = 5 * 4 * 3 * 2 * 1

Das Muster wäre:

0! = 1 1! = 1 2! = 2 * 1 3! = 3 * 2 * 1 4! = 4 * 3 * 2 * 1 5! = 5 * 4 * 3 * 2 * 1

1. Faktorisieren Sie eine Zahl mit Rekursion

function factorialize(num) { // If the number is less than 0, reject it. if (num < 0) return -1; // If the number is 0, its factorial is 1. else if (num == 0) return 1; // Otherwise, call the recursive procedure again else { return (num * factorialize(num - 1)); /* First Part of the recursion method You need to remember that you won’t have just one call, you’ll have several nested calls Each call: num === "?" num * factorialize(num - 1) 1st call – factorialize(5) will return 5 * factorialize(5 - 1) // factorialize(4) 2nd call – factorialize(4) will return 4 * factorialize(4 - 1) // factorialize(3) 3rd call – factorialize(3) will return 3 * factorialize(3 - 1) // factorialize(2) 4th call – factorialize(2) will return 2 * factorialize(2 - 1) // factorialize(1) 5th call – factorialize(1) will return 1 * factorialize(1 - 1) // factorialize(0) Second part of the recursion method The method hits the if condition, it returns 1 which num will multiply itself with The function will exit with the total value 5th call will return (5 * (5 - 1)) // num = 5 * 4 4th call will return (20 * (4 - 1)) // num = 20 * 3 3rd call will return (60 * (3 - 1)) // num = 60 * 2 2nd call will return (120 * (2 - 1)) // num = 120 * 1 1st call will return (120) // num = 120 If we sum up all the calls in one line, we have (5 * (5 - 1) * (4 - 1) * (3 - 1) * (2 - 1)) = 5 * 4 * 3 * 2 * 1 = 120 */ } } factorialize(5);

Ohne Kommentare:

function factorialize(num) { if (num < 0) return -1; else if (num == 0) return 1; else { return (num * factorialize(num - 1)); } } factorialize(5);

2. Faktorisieren Sie eine Zahl mit einer WHILE-Schleife

function factorialize(num) { // Step 1. Create a variable result to store num var result = num; // If num = 0 OR num = 1, the factorial will return 1 if (num === 0 || num === 1) return 1; // Step 2. Create the WHILE loop while (num > 1) { num--; // decrementation by 1 at each iteration result = result * num; // or result *= num; /* num num-- var result result *= num 1st iteration: 5 4 5 20 = 5 * 4 2nd iteration: 4 3 20 60 = 20 * 3 3rd iteration: 3 2 60 120 = 60 * 2 4th iteration: 2 1 120 120 = 120 * 1 5th iteration: 1 0 120 End of the WHILE loop */ } // Step 3. Return the factorial of the provided integer return result; // 120 } factorialize(5);

Ohne Kommentare:

function factorialize(num) { var result = num; if (num === 0 || num === 1) return 1; while (num > 1) { num--; result *= num; } return result; } factorialize(5);

3. Faktorisieren Sie eine Zahl mit einer FOR-Schleife

function factorialize(num) { // If num = 0 OR num = 1, the factorial will return 1 if (num === 0 || num === 1) return 1; // We start the FOR loop with i = 4 // We decrement i after each iteration for (var i = num - 1; i >= 1; i--) { // We store the value of num at each iteration num = num * i; // or num *= i; /* num var i = num - 1 num *= i i-- i >= 1? 1st iteration: 5 4 = 5 - 1 20 = 5 * 4 3 yes 2nd iteration: 20 3 = 4 - 1 60 = 20 * 3 2 yes 3rd iteration: 60 2 = 3 - 1 120 = 60 * 2 1 yes 4th iteration: 120 1 = 2 - 1 120 = 120 * 1 0 no 5th iteration: 120 0 120 End of the FOR loop */ } return num; //120 } factorialize(5);

Ohne Kommentare:

function factorialize(num) { if (num === 0 || num === 1) return 1; for (var i = num - 1; i >= 1; i--) { num *= i; } return num; } factorialize(5);

Ich hoffe, Sie fanden das hilfreich. Dies ist Teil meiner Artikelserie „Wie man FCC-Algorithmen löst“ zu den Herausforderungen des Free Code Camp-Algorithmus, in der ich verschiedene Lösungen vorschlage und Schritt für Schritt erkläre, was unter der Haube passiert.

Drei Möglichkeiten, eine Zeichenfolge in JavaScript zu wiederholen

In diesem Artikel werde ich erklären, wie Sie die Herausforderung "Wiederholen eines Strings, Wiederholen eines Strings" von freeCodeCamp lösen. Das beinhaltet…

Zwei Möglichkeiten, um das Ende eines Strings in JavaScript zu bestätigen

In diesem Artikel werde ich erklären, wie Sie die Herausforderung „Confirm the Ending“ von freeCodeCamp lösen können.

Drei Möglichkeiten, einen String in JavaScript umzukehren

Dieser Artikel basiert auf dem Free Algorithmus Camp Basic Algorithm Scripting „Reverse a String“.

Zwei Möglichkeiten, in JavaScript nach Palindromen zu suchen

Dieser Artikel basiert auf dem Free Code Camp Basic Algorithm Scripting „Auf Palindrome prüfen“.

Three Ways to Find the Longest Word in a String in JavaScript

This article is based on Free Code Camp Basic Algorithm Scripting “Find the Longest Word in a String”.

Three Ways to Title Case a Sentence in JavaScript

This article is based on Free Code Camp Basic Algorithm Scripting “Title Case a Sentence”.

Three ways you can find the largest number in an array using JavaScript

In this article, I’m going to explain how to solve Free Code Camp’s “Return Largest Numbers in Arrays” challenge. This…

If you have your own solution or any suggestions, share them below in the comments.

Or you can follow me on Medium, Twitter, Github and LinkedIn, right after you click the green heart below ;-)

‪#‎StayCurious‬, ‪#‎KeepOnHacking‬ & ‪#‎MakeItHappen‬!