in reply to Puzzled by Recursion.

For me, the thing in code like this that still makes me look at it twice, is the implicit return. The result of the last expression evaluated in a sub is used as the return value if there's no explicit return.

I'm not looking to start yet another war here between people who like explicit returns and people who don't. Just wanted to point it out in case that's what the OP found confusing about the else clause, since noone seems to have mentioned it yet.