mirror of
https://github.com/TheAlgorithms/JavaScript.git
synced 2025-07-05 00:01:37 +08:00
fix: factorial function (#1093)
This commit is contained in:
@ -19,18 +19,18 @@ const calcRange = (num) => {
|
||||
|
||||
const calcFactorial = (num) => {
|
||||
if (num === 0) {
|
||||
return 'The factorial of 0 is 1.'
|
||||
return 1
|
||||
}
|
||||
if (num < 0) {
|
||||
return 'Sorry, factorial does not exist for negative numbers.'
|
||||
throw Error('Sorry, factorial does not exist for negative numbers.')
|
||||
}
|
||||
if (!num) {
|
||||
return 'Sorry, factorial does not exist for null or undefined numbers.'
|
||||
throw Error('Sorry, factorial does not exist for null or undefined numbers.')
|
||||
}
|
||||
if (num > 0) {
|
||||
const range = calcRange(num)
|
||||
const factorial = range.reduce((a, c) => a * c, 1)
|
||||
return `The factorial of ${num} is ${factorial}`
|
||||
return factorial
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -2,30 +2,20 @@ import { calcFactorial } from '../Factorial'
|
||||
|
||||
describe('calcFactorial', () => {
|
||||
it('should return a statement for value "0"', () => {
|
||||
expect(calcFactorial(0)).toBe('The factorial of 0 is 1.')
|
||||
expect(calcFactorial(0)).toBe(1)
|
||||
})
|
||||
|
||||
it('should return a statement for "null" and "undefined"', () => {
|
||||
const nullFactorial = calcFactorial(null)
|
||||
const undefinedFactorial = calcFactorial(undefined)
|
||||
|
||||
expect(nullFactorial).toBe(
|
||||
'Sorry, factorial does not exist for null or undefined numbers.'
|
||||
)
|
||||
expect(undefinedFactorial).toBe(
|
||||
'Sorry, factorial does not exist for null or undefined numbers.'
|
||||
)
|
||||
it('should throw error for "null" and "undefined"', () => {
|
||||
expect(() => { calcFactorial(null) }).toThrow(Error)
|
||||
expect(() => { calcFactorial(undefined) }).toThrow(Error)
|
||||
})
|
||||
|
||||
it('should not support negative numbers', () => {
|
||||
const negativeFactorial = calcFactorial(-5)
|
||||
expect(negativeFactorial).toBe(
|
||||
'Sorry, factorial does not exist for negative numbers.'
|
||||
)
|
||||
it('should throw error for negative numbers', () => {
|
||||
expect(() => { calcFactorial(-1) }).toThrow(Error)
|
||||
})
|
||||
|
||||
it('should return the factorial of a positive number', () => {
|
||||
const positiveFactorial = calcFactorial(3)
|
||||
expect(positiveFactorial).toBe('The factorial of 3 is 6')
|
||||
expect(positiveFactorial).toBe(6)
|
||||
})
|
||||
})
|
||||
|
Reference in New Issue
Block a user