Τρεις τρόποι παραγοντοποίησης ενός αριθμού σε JavaScript

Αυτό το άρθρο βασίζεται στο σενάριο Free Code Camp Basic Algorithm "Factorialize a Number"

Στα μαθηματικά , το παραγοντικό ενός μη αρνητικού ακέραιου n μπορεί να είναι ένας δύσκολος αλγόριθμος. Σε αυτό το άρθρο, θα εξηγήσω τρεις προσεγγίσεις, πρώτη με την αναδρομική συνάρτηση, δεύτερη με βρόχο λίγο και τρίτη με βρόχο a.

Έχουμε ήδη δει μια προσέγγιση αναδρομής σε μια συμβολοσειρά στο προηγούμενο άρθρο, Πώς να αντιστρέψετε μια συμβολοσειρά σε JavaScript σε 3 διαφορετικούς τρόπους; Αυτή τη φορά θα εφαρμόσουμε την ίδια ιδέα σε έναν αριθμό.

Πρόκληση αλγορίθμου

Επιστρέψτε το παραγοντικό του παρεχόμενου ακέραιου.

Εάν ο ακέραιος αριθμός αντιπροσωπεύεται με το γράμμα n, ένα παραγοντικό είναι το προϊόν όλων των θετικών ακεραίων μικρότερο ή ίσο με n.

Τα παραγοντικά παρουσιάζονται συχνά με τη συντομογραφία n!

Για παράδειγμα: 5! = 1 * 2 * 3 * 4 * 5 = 120

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

Παρέχονται δοκιμές

  • factorialize (0) θα πρέπει να επιστρέψει 1
  • factorialize (5) θα πρέπει να επιστρέψει 120
  • factorialize (10) θα πρέπει να επιστρέψει 3628800
  • factorialize (20) θα πρέπει να επιστρέψει 2432902008176640000

Τι είναι η παραγοντοποίηση ενός αριθμού;

Όταν παραγοντοποιείτε έναν αριθμό, πολλαπλασιάζετε αυτόν τον αριθμό με κάθε διαδοχικό αριθμό μείον έναν.

Εάν ο αριθμός σας είναι 5, θα έχετε:

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

Το μοτίβο θα ήταν:

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

1. Παραγοντοποιήστε έναν αριθμό με επανάληψη

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);

ΧΩΡΙΣ ΣΧΟΛΙΑ:

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

2. Παραγοντοποιήστε έναν αριθμό με βρόχο WHILE

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);

ΧΩΡΙΣ ΣΧΟΛΙΑ:

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

3. Παραγοντοποιήστε έναν αριθμό με βρόχο FOR

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);

ΧΩΡΙΣ ΣΧΟΛΙΑ:

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

Ελπίζω να το βρήκατε χρήσιμο. Αυτό είναι μέρος της σειράς άρθρων μου «Πώς να επιλύσω τους αλγόριθμους FCC» σχετικά με τις Προκλήσεις Αλγόριθμου Free Code Camp, όπου προτείνω αρκετές λύσεις και εξηγώ βήμα-βήμα τι συμβαίνει κάτω από την κουκούλα.

Τρεις τρόποι για να επαναλάβετε μια συμβολοσειρά σε JavaScript

Σε αυτό το άρθρο, θα εξηγήσω πώς να λύσετε την πρόκληση "Επανάληψη συμβολοσειράς επανάληψη συμβολοσειράς" του FreeCodeCamp. Αυτό περιλαμβάνει…

Δύο τρόποι επιβεβαίωσης του τερματισμού μιας συμβολοσειράς σε JavaScript

Σε αυτό το άρθρο, θα σας εξηγήσω πώς να λύσετε την πρόκληση του "Confirm the Ending" του FreeCodeCamp.

Τρεις τρόποι αντιστροφής μιας συμβολοσειράς σε JavaScript

Αυτό το άρθρο βασίζεται στο σενάριο Free Code Camp Basic Algorithm "Reverse a String"

Δύο τρόποι για να ελέγξετε για Palindromes σε JavaScript

Αυτό το άρθρο βασίζεται στο σενάριο Free Code Camp Basic Algorithm "Έλεγχος για Palindromes".

Τρεις τρόποι για να βρείτε τη μεγαλύτερη λέξη σε μια συμβολοσειρά σε JavaScript

Αυτό το άρθρο βασίζεται στο σενάριο Free Code Camp Basic Algorithm "Βρείτε τη μεγαλύτερη λέξη σε μια συμβολοσειρά".

Τρεις τρόποι για τον τίτλο υπόθεση μια πρόταση σε JavaScript

Αυτό το άρθρο βασίζεται στο σενάριο Free Code Camp Basic Algorithm "Τίτλος Case a Sentence".

Τρεις τρόποι για να βρείτε τον μεγαλύτερο αριθμό σε έναν πίνακα χρησιμοποιώντας JavaScript

Σε αυτό το άρθρο, θα εξηγήσω πώς να λύσω την πρόκληση του "Return Largest Numbers in Arrays" του Free Code Camp. Αυτό…

Εάν έχετε τη δική σας λύση ή οποιεσδήποτε προτάσεις, μοιραστείτε τις παρακάτω στα σχόλια.

Ή μπορείτε να με ακολουθήσετε στο Medium , Twitter, Github και LinkedIn , αμέσως αφού κάνετε κλικ στην πράσινη καρδιά παρακάτω ;-)

# StayCurious, # KeepOnHacking & # MakeItHappen!