More precisely: the same number of arguments (or "arity") is fine, as long as they each match parameters uniquely. In your original example all three countdown functions take 1 argument, but two match on (different) literal values and one only checks the data type of the parameter.
This would also work when added to your Recursion module:
def countdown(n) when is_string(n) do
def countdown(n) do
That last one would match whenever the parameter was not 0, 2 or an integer.