factorial via generator

by Vladymyr Shevchuk

JavaScript

const factorial = n => {
      if (!n) return 1;
      return n * factorial(n - 1);
    };

    function* genFactorial() {
      let result = 1;
      let n = yield;

      while (n) yield result *= n--;

      yield result;
    }

    const fact = genFactorial();

    console.error('factorial', factorial(8));
    console.error('fact.next()', fact.next());
    console.error('fact.next()', fact.next(8));

    for (let n of fact) {
      console.error('n', n);
    }