Recursive functions
When a function calls itself to produce a result, it is said to be recursive. Sometimes recursive functions are very useful, in that they make it easier to write code—some algorithms are very easy to write using the recursive paradigm, while others are not. There is no recursive function that cannot be rewritten in an iterative fashion, so it's usually up to the programmer to choose the best approach for the case at hand.
The body of a recursive function usually has two sections: one where the return value depends on a subsequent call to itself, and one where it doesn't (called the base case).
As an example, we can consider the (hopefully now familiar) factorial function, N!. The base case is when N is either 0 or 1—the function returns 1 with no need for further calculation. On the other hand, in the general case, N! returns the product:
1 * 2 * ... * (N-1) * N
If you think about it, N! can be rewritten like this...