From 759e81df1f9d77f922483a161474671877b8a9b1 Mon Sep 17 00:00:00 2001 From: PatOnTheBack <51241310+PatOnTheBack@users.noreply.github.com> Date: Tue, 2 Jul 2019 09:19:44 -0400 Subject: [PATCH] Create factorial.js This program calculates and displays the factorial for a user-input number. --- maths/factorial.js | 52 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 52 insertions(+) create mode 100644 maths/factorial.js diff --git a/maths/factorial.js b/maths/factorial.js new file mode 100644 index 000000000..574e498ef --- /dev/null +++ b/maths/factorial.js @@ -0,0 +1,52 @@ +/* + author: PatOnTheBack + license: GPL-3.0 or later + + Modified from: + https://github.com/TheAlgorithms/Python/blob/master/maths/factorial_python.py + + This script will find the factorial of a number provided by the user. + + More about factorials: + https://en.wikipedia.org/wiki/factorial +*/ + +function calc_range(num) { + // Generate a range of numbers from 1 to `num`. + "use strict"; + var i = 1; + var range = []; + while (i <= num) { + range.push(i); + i += 1; + } + return range; +} + +function calc_factorial(num) { + "use strict"; + var factorial; + var range = calc_range(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) { + factorial = 1; + range.forEach(function (i) { + factorial = factorial * i; + }); + return "The factorial of " + num + " is " + factorial; + } +} + +// Run `factorial` Function to find average of a list of numbers. +var num = prompt("Enter a number: "); +alert(calc_factorial(num));