Sometimes, when being interviewed for a job as a software developer, you’ll be asked a question such as “write a method that takes an integer as a parameter, and returns it’s factorial.”

For example, the factorial of 3 is represented as “3!”, which is calculated via 3*2*1, which equals 6. 4! is 4*3*2*1, which is 24, etc.

Putting aside whether these kinds of questions should be asked in an interview, if they’re asking you this, there’s a fairly high likelihood they’re asking for you to show that you understand recursion. If that’s the case, no problem, something like this will calculate the factorial:

``````let rec factorial n =
match n with
| 0 | 1 -> 1
| n when n > 0 && n <= 12 -> n * factorial (n - 1)
| _ -> failwith "Parameter n is out of the supported range. Must be between 0 and 12."``````

This can be run in the F# interactive shell via:

``````> factorial 3;;
val it : int = 6``````

But what if they want to find out whether you:

1. Understand recursion, and…
2. Know when you can avoid recursion, and just write simple methods instead.