On Mon, 04 May 2009 23:09:25 -0700, Carl Banks wrote: > On May 4, 8:22 pm, Steven D'Aprano > <ste...@remove.this.cybersource.com.au> wrote: >> On Mon, 04 May 2009 15:51:15 -0700, Carl Banks wrote: >> > All >> > recursion does it make what you're doing a lot less readable for >> > almost all programmers. >> >> What nonsense. > > It's not nonsense for a singly-linked list.
def ivisit(node): print node while node and node.link is not None: node = node.link print node def rvisit(node): print node if node and node.link is not None: rvisit(node.link) If there are programmers who find rvisit "a lot less readable" than ivisit, then in my arrogant opinion they should consider a change of profession. > I don't need to be taught > the benefit of recursion, but whenever interation is suitable for an > algorithm/data structure, as it is with singly-linked lists, then it is > the more readable and more preferrable choice, especially in Python. Most (all?) recursive algorithms can be re-written as iteration. For many recursive algorithms (but not all) the cost for doing so is to simulate recursion yourself by managing your own stack. By making such an absolutist claim, you're claiming that it is "more readable" and "more preferable" to manage your own stack than to let the compiler do so. That's clearly nonsense. Whenever iteration gives a simpler and more readable algorithm than recursion, then it should be preferred on account of being simpler and more readable. That's not just a no-brainer, it's a tautology. "Whenever iteration is simpler, it's simpler." But that's a far cry from what you said: that recursion, as a general technique, is "a lot less readable" for "almost all" programmers. > In Python the One Obvious Way is iteration when possible, recursion when > necessary. There's nothing "obvious" about solving the 8 Queens problem using iteration. Or walking a binary tree. Or generating all the permutations of a list. But don't just tell me that recursion isn't Pythonic. Tell Guido: http://www.python.org/doc/essays/graphs.html I quote: "These [recursive] functions are about as simple as they get. Yet, they are nearly optimal (for code written in Python)." -- Steven -- http://mail.python.org/mailman/listinfo/python-list