Específicamente, usa recursión al final de la cola, la cual está presente en lenguajes como Scheme para que no se requiera usar grandes cantidades de espacio del stack.