Factorial of a Number in JavaScript

Multiply 1 through n. 0! is 1. Negative n is not a number you want here.

BeginnerLoop ProgramsExample 3 of 6
factorial-of-a-number.js
1// Factorial: n! = n × (n-1) × (n-2) × ... × 2 × 1
2// Example: 5! = 5 × 4 × 3 × 2 × 1 = 120
3
4// Method 1: Using for loop
5function factorialLoop(n) {
6 if (n < 0) return "Invalid input";
7 if (n === 0 || n === 1) return 1;
8
9 let result = 1;
10 for (let i = 2; i <= n; i++) {
11 result *= i;
12 }
13 return result;
14}
15
16console.log("5! =", factorialLoop(5));
17console.log("0! =", factorialLoop(0));
18console.log("10! =", factorialLoop(10));
19
20// Method 2: Using recursion
21function factorialRecursive(n) {
22 if (n < 0) return "Invalid input";
23 if (n === 0 || n === 1) return 1;
24 return n * factorialRecursive(n - 1);
25}
26
27console.log("\nUsing recursion:");
28console.log("5! =", factorialRecursive(5));
29console.log("7! =", factorialRecursive(7));
30
31// Method 3: Using while loop
32function factorialWhile(n) {
33 if (n < 0) return "Invalid input";
34 if (n === 0 || n === 1) return 1;
35
36 let result = 1;
37 let i = n;
38 while (i > 1) {
39 result *= i;
40 i--;
41 }
42 return result;
43}
44
45console.log("\nUsing while:");
46console.log("6! =", factorialWhile(6));
47
48// Method 4: Using reduce
49function factorialReduce(n) {
50 if (n < 0) return "Invalid input";
51 if (n === 0 || n === 1) return 1;
52
53 return Array.from({length: n}, (_, i) => i + 1)
54 .reduce((product, num) => product * num, 1);
55}
56
57console.log("\nUsing reduce:");
58console.log("4! =", factorialReduce(4));

Output

5! = 120
0! = 1
10! = 3628800

Using recursion:
5! = 120
7! = 5040

Using while:
6! = 720

Using reduce:
4! = 24

What's going on

Start from 1, multiply up. 5! is 120.

21! already overflows Number. Use BigInt if you actually care. n === 0 returns 1, not 0.