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));