From e37de0ff2a83d45f78f6e5a7d58b0ecd20c63aa9 Mon Sep 17 00:00:00 2001 From: Angelos Chalaris Date: Sat, 16 Dec 2017 19:02:23 +0200 Subject: [PATCH] Resolve #156 --- README.md | 5 ++++- snippets/factorial.md | 5 ++++- 2 files changed, 8 insertions(+), 2 deletions(-) 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 ```