Is there a good example of a time where recursion would be much more efficient than iteration?
I've used the same approach recently when I wrote a GraphQL query generator in Swift. I recursively iterate through an array of dictionaries, each being able to also hold an array of dictionaries of it's own, each being able to also hold an array of dictionaries of it's own, and so on. In the end all I end up with is single a string.
Maybe it's not exactly more efficient, but it was certainly much easier for me.