Recursively computes the factorial of the number n.
@param {Number} n A number.
@return {Number|Infinity} n!
function factorial (n) {
                    if(typeof n !== 'number' || n < 0) return NaN;
                    if(n > 170) return Infinity;
                    if(n === 0 || n === 1) return 1;
                    return n * factorial(n - 1);
                }