Tres formas de factorializar un número en JavaScript

Este artículo se basa en la secuencia de comandos del algoritmo básico de Free Code Camp "Factorializar un número"

En matemáticas , el factorial de un número entero no negativo n puede ser un algoritmo complicado. En este artículo, voy a explicar tres enfoques, primero con la función recursiva, segundo usando un ciclo while y tercero usando un ciclo for.

Ya hemos visto un enfoque de recursividad en una cadena en el artículo anterior, ¿Cómo revertir una cadena en JavaScript de 3 formas diferentes? Esta vez aplicaremos el mismo concepto en un número.

Desafío del algoritmo

Devuelve el factorial del entero proporcionado.

Si el número entero se representa con la letra n, un factorial es el producto de todos los números enteros positivos menores o iguales an.

Los factoriales a menudo se representan con la notación abreviada n!

Por ejemplo: 5! = 1 * 2 * 3 * 4 * 5 = 120

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

Casos de prueba proporcionados

  • factorialize (0) debería devolver 1
  • factorialize (5) debería devolver 120
  • factorialize (10) debería devolver 3628800
  • factorialize (20) debería devolver 2432902008176640000

¿De qué se trata factorializar un número?

Cuando factorializas un número, estás multiplicando ese número por cada número consecutivo menos uno.

Si su número es 5, tendría:

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

El patrón sería:

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

1. Factorializar un número con recursividad

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

Sin comentarios:

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

2. Factorializar un número con un bucle 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);

Sin comentarios:

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

3. Factorializar un número con un bucle 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);

Sin comentarios:

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

Espero que hayas encontrado esto util. Esto es parte de mi serie de artículos “Cómo resolver algoritmos de FCC” sobre los desafíos de algoritmos de Free Code Camp, donde propongo varias soluciones y explico paso a paso lo que sucede bajo el capó.

Tres formas de repetir una cadena en JavaScript

En este artículo, explicaré cómo resolver el desafío "Repetir una cadena, repetir una cadena" de freeCodeCamp. Esto involucra…

Dos formas de confirmar el final de una cadena en JavaScript

En este artículo, explicaré cómo resolver el desafío "Confirmar el final" de freeCodeCamp.

Tres formas de invertir una cadena en JavaScript

Este artículo se basa en la secuencia de comandos del algoritmo básico de Free Code Camp "Reverse una cadena"

Dos formas de buscar palíndromos en JavaScript

Este artículo se basa en el Scripting del algoritmo básico de Free Code Camp "Comprobar palíndromos".

Tres formas de encontrar la palabra más larga de una cadena en JavaScript

Este artículo se basa en la secuencia de comandos del algoritmo básico de Free Code Camp "Encuentra la palabra más larga en una cadena".

Tres formas de poner un título a una oración en JavaScript

Este artículo se basa en la secuencia de comandos del algoritmo básico de Free Code Camp “Título de caso una oración”.

Tres formas de encontrar el número más grande en una matriz usando JavaScript

En este artículo, voy a explicar cómo resolver el desafío "Devolver números más grandes en matrices" de Free Code Camp. Esta…

Si tiene su propia solución o alguna sugerencia, compártala a continuación en los comentarios.

O puedes seguirme en Medium , Twitter, Github y LinkedIn , justo después de hacer clic en el corazón verde a continuación ;-)

# StayCurious, # KeepOnHacking & # MakeItHappen!