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:
- Understand recursion, and…
- Know when you can avoid recursion, and just write simple methods instead.