Some of the above problems have very neat recursive solution but the recursion is bad idea as it tends to various edge cases.
For example, "write a parser for a file format that contains arbitarily nested data strucutres", is exactly a problem where you DO NOT want to use recursion, and the reason is that "arbitarily" part. What if there is 1000 levels? What if there is 100 thousand levels?
DoS guys love these kinds of implementations. Just send very small, very well compressed payload and look how it all crashes and burns.