Mastering recursive programming: "Mastering recursive programming
Learning recursion yields maintainable, consistent, provably correct code
Jonathan Bartlett (firstname.lastname@example.org), Director of Technology, New Media Worx
16 Jun 2005
Recursion is a tool not often used by imperative language developers, because it is thought to be slow and to waste space, but as the author demonstrates, there are several techniques that can be used to minimize or eliminate these problems. He introduces the concept of recursion and tackle recursive programming patterns, examining how they can be used to write provably correct programs. Examples are in Scheme and C."
I love recursive programming - it looks really elegant when you create something - but I find it has to be documented or I don't understand it when it comes to be maintained. Oddly I have only HAD to use it once, when working on a generic custom list handling method in a game another (non-compsci trained) developer was writing but having trouble editing.