I think that recursion here adds unnecessary complexity and possibly errors. My preference would be to fix the original implementation. In particular, instead of removing items from the list that is being iterated, we should be iterating over  a copy of the list, while removing items from the original.