diff --git a/README.md b/README.md index bbadea755..1ac43f289 100644 --- a/README.md +++ b/README.md @@ -146,11 +146,12 @@ var isEven = num => Math.abs(num) % 2 === 0; ### Factorial -Create an array of length `n+1`, use `reduce()` to get the product of every value in the given range, utilizing the index of each element. +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`. ```js -var factorial = n => - Array.apply(null, [1].concat(Array(n))).reduce( (a, _, i) => a * i || 1 , 1); +const factorial = n => n <= 1 ? 1 : n * factorial(n - 1) ``` ### Fibonacci array generator diff --git a/snippets/factorial.md b/snippets/factorial.md index dbdb7a802..8472c3f51 100644 --- a/snippets/factorial.md +++ b/snippets/factorial.md @@ -1,14 +1,9 @@ ### Factorial -Use recursion. If `n` is less than (for safety) or equal to `1`, return `1`. Otherwise, return the product of `n` and the factorial of `n - 1`. +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`. ```js const factorial = n => n <= 1 ? 1 : n * factorial(n - 1) ``` - -Another way: create an array of length `n+1`, use `reduce()` to get the product of every value in the given range, utilizing the index of each element. - -```js -var factorial = n => - Array.apply(null, [1].concat(Array(n))).reduce( (a, _, i) => a * i || 1 , 1); -```