Personally I'm a big fan of using the sequence operator for tasks like this; it directly represents the algorithm constructing the Collatz sequence in a simple and elegant fashion.
You should be able to memoize the recursive version for a speed increase.