For our first example of recursion, let's look at how to compute the factorial function. We indicate the factorial of nn by n!. It's just the product of the integers 1 through nn. For example, 5! equals 1⋅2⋅3⋅4⋅51, dot, 2, dot, 3, dot, 4, dot, 5, or 120. (Note: Wherever we're talking about the factorial function, all exclamation points refer to the factorial function and are not for emphasis.)
You might wonder why we would possibly care about the factorial function. It's very useful for when we're trying to count how many different orders there are for things or how many different ways we can combine things. For example, how many different ways can we arrange nn things? We have nn choices for the first thing. For each of these nn choices, we are left with n−1n, minus, 1 choices for the second thing, so that we have n⋅(n−1)n, dot, left parenthesis, n, minus, 1, right parenthesis choices for the first two things, in order. Now, for each of these first two choices, we have n−2n, minus, 2 choices for the third thing, giving us n⋅(n−1)⋅(n−2)n, dot, left parenthesis, n, minus, 1, right parenthesis, dot, left parenthesis, n, minus, 2, right parenthesis choices for the first three things, in order. And so on, until we get down to just two things remaining, and then just one thing remaining. Altogether, we have n⋅(n−1)⋅(n−2)⋯2⋅1 ways that we can order nn things. And that product is just n! (nn factorial), but with the product written going from nn down to 1 rather than from 1 up to nn.
Another use for the factorial function is to count how many ways you can choose things from a collection of things. For example, suppose you are going on a trip and you want to choose which T-shirts to take. Let's say that you own nn T-shirts but you have room to pack only kk of them. How many different ways can you choose kk T-shirts from a collection of nn T-shirts? The answer (which we won't try to justify here) turns out to be n!/(k!⋅(n−k)!). So the factorial function can be pretty useful. You can learn more about permutations and combinations here, but you don't need to understand them to implement a factorial algorithm.
The factorial function is defined for all positive integers, along with 0. What value should 0! have? It's the product of all integers greater than or equal to 1 and less than or equal to 0. But there are no such integers. Therefore, we define 0! to equal the identity for multiplication, which is 1. (Defining 0! = 1 meshes nicely with the formula for choosing kk things out of nn things. Suppose that we want to know how many ways there are to choose nn things out of nn things. That's easy, because there is only one way: choose all nn things. So now we know that, using our formula, n!/(n!⋅(n−n)!) should equal 1. But (n−n)! is 0!, so now we know that n!/(n!⋅0!) should equal 1. If we cancel out the n! in both the numerator and denominator, we see that 1/(0!) should equal 1, and it does because 0! equals 1.)
So now we have a way to think about n!. It equals 1 when n=0n, equals, 0, and it equals 1⋅2⋯(n−1)⋅n when nn is positive.