@princedev/calculate
Version:
Fast, lightweight, and extinsible mathematical and statistical functions.
32 lines (27 loc) • 591 B
text/typescript
import exactArguments from '../../_utils/exactArguments';
/**
* @name factorial
* @summary Returns the factorial of a number.
*
* @description Returns the factorial of a number.
*
* @example
* // Normal usage
* let result = factorial(4);
* // => 24
*
* @param {numberr} a numbers given.
* @returns {number}
*
* @function pure
*/
export default function factorial(a: number): number {
exactArguments(1, arguments);
return factorialStep(a);
}
function factorialStep(a: number): number {
if (a === 1 || a === 0) {
return 1;
}
return a * factorialStep(a - 1);
}