Huh, it seems Bob further optimized his code. The one I remember used the similar approach, but employed a doubly-linked list for backtracking. The pleasant surprise that I got from his code was that recursion plus a linked list still beat those "faster" languages, a classical example of optimizing algorithms first, as beautifully argued in Steven Skiena's Algorithm Design Manual