Start from the beginning. A **factorial** is a specific multiplication function applied to a positive integer value and all of its positive descendants. True but vague and tough to digest.

A **factorial** means to multiply a consecutive sequence of descending **natural numbers**.

Below, **n** is any positive** integer** (equal to a **natural number**), being multiplied:

** **n! = n**·****(n–1)****·****(n–2)****·…·****3****·****2****·****1 [1]**

The symbol for a **factorial** is the exclamation point: **!** .** n! **is pronounced *‘en’* *factorial* (math fans) or *‘en’ bang* (programmers) or shriek out ** n** (literalists and comedians).

Here are some examples: **3!** = 3**·**2**·**1 = **6**

** 10!** = 10**·**9**·**8**·**7**·**6**·**5**·**4**·**3**·**2**·**1 = **3628800**

{ Sudden question: In 1 second, how much would **9!** be? }

** 1!** = **1**

To see the first 100 factorials, please admire the following table by N. J. A. Sloane: First 100 Factorials

These integer results become huge as **n** increases. In a future post, I will write about how to determine the number of digits of **n! without** calculating the factorial and visually counting the digits.

Because mathematicians revere economy in writing, **n!** can be defined for any positive integer **n** by two rules:

** **n! = n**·****(n–1)!**

** **and **[2]**

** ****1! = 1 **

meaning, **n!** is the product of **n** and the **factorial** of the next lower value shown as **(n – 1)**.

In the case of the second rule, this only works if we also have

** 0! = 1 [3]**

Since by rule 1 (and I know this may be a head-scratcher…)

** 1! = 1****·0! = 1 [4]**

To find the value of **n!** , the first rule is applied repeatedly, as shown:

** n! = n****·****(n–1)! = n****·****(n–1)****·****(n-2)! = … =
n**

**·**

**(n–1)**

**·**

**(n-2)**

**·**

**…**

**·**

**3**

**·**

**2**

**·**

**1! = [5]**

**n****·**

**(n–1)**

**·**

**(n-2)**

**·**

**…**

**·**

**3**

**·**

**2**

**·**

**1**

At this point, the original definition of **n! **in **[1]** has been recreated.

This **[2]** is called a **recursive** definition of **n! **. It has been said anonymously that, “*in order to understand recursion, one must first understand recursion”*.

In Computer Programming, **n! **can be determined via an ** iterative** set of instructions, involving looping. Also,

**n!**can be determined via a

**called function or program, which calls itself repeatedly.**

*recursively*The Rosetta Code.org Wiki for **factorial** lists approximately 179 different programming languages with both iterative and recursive factorial code segments. It’s quite impressive – See:

Factorial Programs and Functions – Rosetta Code

Within this listing are programs that are part of the Unix/Linux facilities: **awk**, **bash**, **bc**, **dc**, **JavaScript**, **m4**, **perl**, **php**, **python**, **R**, **ruby**, and Unix shells (**sh**, **ksh**, **zsh**). These programs do not require a compiler. In future posts, these will be examined more closely.

There’s much more to **factorials**, which I will defer to further posts .

It has been suspected that mathematicians invented the factorial symbol (**!**) as a way of making mathematics look more exciting; after all, as the value of **n** increases, its factorial increases incredibly fast.