diff --git a/Maths/Factorial.js b/Maths/Factorial.js index 04d9ef08c..29b416a67 100644 --- a/Maths/Factorial.js +++ b/Maths/Factorial.js @@ -14,35 +14,22 @@ 'use strict' const calcRange = (num) => { - // Generate a range of numbers from 1 to `num`. - let i = 1 - const range = [] - while (i <= num) { - range.push(i) - i += 1 - } - return range + return [...Array(num).keys()].map(i => i + 1) } const calcFactorial = (num) => { - let factorial - const range = calcRange(num) - - // Check if the number is negative, positive, null, undefined, or zero - if (num < 0) { - return 'Sorry, factorial does not exist for negative numbers.' - } - if (num === null || num === undefined) { - return 'Sorry, factorial does not exist for null or undefined numbers.' - } if (num === 0) { return 'The factorial of 0 is 1.' } + if (num < 0) { + return 'Sorry, factorial does not exist for negative numbers.' + } + if (!num) { + return 'Sorry, factorial does not exist for null or undefined numbers.' + } if (num > 0) { - factorial = 1 - range.forEach(function (i) { - factorial = factorial * i - }) + const range = calcRange(num) + const factorial = range.reduce((a, c) => a * c, 1) return `The factorial of ${num} is ${factorial}` } } diff --git a/Maths/test/Factorial.test.js b/Maths/test/Factorial.test.js index bd22ad436..a06519477 100644 --- a/Maths/test/Factorial.test.js +++ b/Maths/test/Factorial.test.js @@ -1,10 +1,6 @@ import { calcFactorial } from '../Factorial' describe('calcFactorial', () => { - it('is a function', () => { - expect(typeof calcFactorial).toEqual('function') - }) - it('should return a statement for value "0"', () => { expect(calcFactorial(0)).toBe('The factorial of 0 is 1.') })