The first is head recursive. If it were written in opposite order (in NY, on the street, at the house, the car …) it would be tail recursive and would be very easy to parse. Once we’ve found NY we can forget that we’re there and reuse our stack space to find the street, etc. I think this is why it’s so much easier than the second, which is neither head nor tail recursive and so requires a stack frame for each level.
The first is head recursive. If it were written in opposite order (in NY, on the street, at the house, the car …) it would be tail recursive and would be very easy to parse. Once we’ve found NY we can forget that we’re there and reuse our stack space to find the street, etc. I think this is why it’s so much easier than the second, which is neither head nor tail recursive and so requires a stack frame for each level.