Tail recursion optimization
Eliminate ArrayList variable