Tail call optimisation
by Artem
JavaScript
'use strict';
function factorial(n, acc = 1) {
if (n <= 1) return acc;
return factorial(n - 1, n * acc);
}
// factorial(3, 1) -> factorial(3 - 1, 3 * 1)
// factorial(2, 3) -> factorial(2 - 1, 2 * 3)
// factorial(1, 6) -> 6
console.log(factorial(3));