diff --git a/README.md b/README.md index af82b8f36..0d015fbee 100644 --- a/README.md +++ b/README.md @@ -891,9 +891,12 @@ const isEven = num => num % 2 === 0; Use recursion. If `n` is less than or equal to `1`, return `1`. Otherwise, return the product of `n` and the factorial of `n - 1`. +Throws an exception if `n` is a negative number. ```js -const factorial = n => n <= 1 ? 1 : n * factorial(n - 1); +const factorial = n => + n < 0 ? (() => { throw new TypeError('Negative numbers are not allowed!') })() + : n <= 1 ? 1 : n * factorial(n - 1); // factorial(6) -> 720 ``` diff --git a/snippets/factorial.md b/snippets/factorial.md index 155b7229e..d881fe941 100644 --- a/snippets/factorial.md +++ b/snippets/factorial.md @@ -3,8 +3,11 @@ Use recursion. If `n` is less than or equal to `1`, return `1`. Otherwise, return the product of `n` and the factorial of `n - 1`. +Throws an exception if `n` is a negative number. ```js -const factorial = n => n <= 1 ? 1 : n * factorial(n - 1); +const factorial = n => + n < 0 ? (() => { throw new TypeError('Negative numbers are not allowed!') })() + : n <= 1 ? 1 : n * factorial(n - 1); // factorial(6) -> 720 ```