Я пытаюсь создать простую рекурсивную JavaScript функцию, которая производит факториалы. Я думаю, что исчерпываю локальную память в стеке вызовов при запуске приведенного ниже кода и, вероятно, вызываю бесконечную рекурсию.
* Примечание: я хочу использовать рекурсию для ее решения.
function factorial(num, factor) {
//loop through descending order multiply
if (num === 1) {
return newNum
}
let newNum = num --;
let newProduct = num * newNum;
//recurse
return factorial(newNum, newProduct);
}
// Test cases
console.log(factorial(4)); // -> 24
console.log(factorial(6)); // -> 720
console.log(factorial(0)); // -> 1
Любые предложения относительно того, как и почему мне следует изменить приведенный выше код.