A recursive function is a function calling itself again and again. The keyword
rec should be added to the declaration to let the compiler know that the function is recursive.
let rec factorial n = if n = 0 then 1 else n * (factorial (n-1));;
This is one of the most common example of recursive function: factorial.
The same function can be written using pattern matching like this:
let rec factorial n = match n with | 0 -> 1 | _ -> n * (factorial (n-1));;