Skip to content

2803. Factorial Generator πŸ”’

Description

Write a generator function that takes an integer n as an argument and returns a generator object which yields the factorial sequence.

TheΒ factorial sequenceΒ is defined by the relation n!Β = n *Β (n-1)Β * (n-2)Β *Β ...Β * 2 * 1​​​.

The factorial of 0 is defined as 1.

Β 

Example 1:

Input: n = 5
Output: [1,2,6,24,120]
Explanation: 
const gen = factorial(5)
gen.next().value // 1
gen.next().value // 2
gen.next().value // 6
gen.next().value // 24
gen.next().value // 120

Example 2:

Input: n = 2
Output: [1,2]
Explanation: 
const gen = factorial(2) 
gen.next().value // 1 
gen.next().value // 2 

Example 3:

Input: n = 0
Output: [1]
Explanation: 
const gen = factorial(0) 
gen.next().value // 1 

Β 

Constraints:

  • 0 <= n <= 18

Solutions

Solution 1

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
function* factorial(n: number): Generator<number> {
    if (n === 0) {
        yield 1;
    }
    let ans = 1;
    for (let i = 1; i <= n; ++i) {
        ans *= i;
        yield ans;
    }
}

/**
 * const gen = factorial(2);
 * gen.next().value; // 1
 * gen.next().value; // 2
 */

Comments