Skip to main content
← Elixir & OTP Recursion & TCO
4
1 10

Naive Recursion

  def factorial(1), do: 1
def factorial(n) do
  n * factorial(n - 1)
end

Tail-Recursive

  def factorial(n), do: factorial(n, 1)

def factorial(1, acc), do: acc
def factorial(n, acc) do
  factorial(n - 1, n * acc)
end
0/8

Naive Stack

factorial(4)
depth: 1

Tail-Call Stack

factorial(4, 1)
depth: 1
Memory usage max depth: 4 vs 1