81 lines
		
	
	
		
			1.0 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
		
		
			
		
	
	
			81 lines
		
	
	
		
			1.0 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
|   | --- | ||
|  | id: 597b2b2a2702b44414742771 | ||
|  | title: Factorial | ||
|  | challengeType: 5 | ||
|  | forumTopicId: 302263 | ||
|  | dashedName: factorial | ||
|  | --- | ||
|  | 
 | ||
|  | # --description--
 | ||
|  | 
 | ||
|  | Write a function to return the factorial of a number. | ||
|  | 
 | ||
|  | Factorial of a number is given by: | ||
|  | 
 | ||
|  | <pre><big>n! = n * (n-1) * (n-2) * ..... * 1</big> | ||
|  | </pre> | ||
|  | 
 | ||
|  | For example: | ||
|  | 
 | ||
|  | <ul> | ||
|  |   <li><code>3! = 3 * 2 * 1 = 6</code></li> | ||
|  |   <li><code>4! = 4 * 3 * 2 * 1 = 24</code></li> | ||
|  | </ul> | ||
|  | 
 | ||
|  | **Note:** `0! = 1` | ||
|  | 
 | ||
|  | # --hints--
 | ||
|  | 
 | ||
|  | `factorial` should be a function. | ||
|  | 
 | ||
|  | ```js | ||
|  | assert(typeof factorial === 'function'); | ||
|  | ``` | ||
|  | 
 | ||
|  | `factorial(2)` should return a number. | ||
|  | 
 | ||
|  | ```js | ||
|  | assert(typeof factorial(2) === 'number'); | ||
|  | ``` | ||
|  | 
 | ||
|  | `factorial(3)` should return 6. | ||
|  | 
 | ||
|  | ```js | ||
|  | assert.equal(factorial(3), 6); | ||
|  | ``` | ||
|  | 
 | ||
|  | `factorial(5)` should return 120. | ||
|  | 
 | ||
|  | ```js | ||
|  | assert.equal(factorial(5), 120); | ||
|  | ``` | ||
|  | 
 | ||
|  | `factorial(10)` should return 3,628,800. | ||
|  | 
 | ||
|  | ```js | ||
|  | assert.equal(factorial(10), 3628800); | ||
|  | ``` | ||
|  | 
 | ||
|  | # --seed--
 | ||
|  | 
 | ||
|  | ## --seed-contents--
 | ||
|  | 
 | ||
|  | ```js | ||
|  | function factorial(n) { | ||
|  | 
 | ||
|  | } | ||
|  | ``` | ||
|  | 
 | ||
|  | # --solutions--
 | ||
|  | 
 | ||
|  | ```js | ||
|  | function factorial(n) { | ||
|  |   let sum = 1; | ||
|  |   while (n > 1) { | ||
|  |     sum *= n; | ||
|  |     n--; | ||
|  |   } | ||
|  |   return sum; | ||
|  | } | ||
|  | ``` |