Кажется, вы хорошо понимаете основы рекурсивного программирования, однако я не уверен, что вы полностью понимаете, как работает факториальная функция.
Например:
3! = 3 * 2 * 1 = 6
4! = 4 * 3 * 2 * 1 = 24
Вы можете express рекурсивно:
a (0) = 1
a (n) = a (n - 1) * n
Реализуя эту логику c в своем коде, вы получите следующее:
function factorial(x) {
if (x < 0) return;
if (x === 0) return 1;
return x * factorial(x - 1);
}
console.log(factorial(4))
Возвращает 24, как и ожидалось.