A RetroSearch Logo

Home - News ( United States | United Kingdom | Italy | Germany ) - Football scores

Search Query:

Showing content from https://mail.python.org/pipermail/python-dev/2004-July/046357.html below:

[Python-Dev] Re: Proper tail recursion

[Python-Dev] Re: Proper tail recursion [Python-Dev] Re: Proper tail recursionDavid Eppstein eppstein at ics.uci.edu
Mon Jul 19 20:30:30 CEST 2004
In article <005701c46db5$764b48d0$6602a8c0 at arkdesktop>,
 "Andrew Koenig" <ark-mlist at att.net> wrote:

> > I also haven't seen the use case that requires this and couldn't
> > easily be fixed by changing the data structure or code slightly.
> > (Andrew Koenig's theoretical objections don't count as use cases.)
> 
> Didn't we just hear that this problem affects pickling?

We heard that the recursion limit prevents recursive DFS from being 
applied to large graphs, and that pickling uses DFS.  However, tail 
recursion wouldn't help in this case -- it's a deep recursion but not a 
tail recursion.

I did end up implementing a non-recursive DFS, btw.  It has two 
advantages over recursive DFS: (1) the amount of stuff stored per stack 
item is much smaller: a pair (vertex, iterator of neighbors), rather 
than all the overhead of a call stack frame, and (2) the flat control 
structure allows it to be used as a simple generator (e.g. for listing 
vertices in preorder or postorder).  The disadvantage is that the code 
is (I think) less readable than a recursive DFS would be.  You can view 
my attempt at http://www.ics.uci.edu/~eppstein/PADS/DFS.py (one hint 
that Python's control structures are missing something is the explicit 
use of try...iterator.next()...except StopIteration) but please send any 
feedback about my code to me off-list since it's not really a python-dev 
issue any more.

-- 
David Eppstein                      http://www.ics.uci.edu/~eppstein/
Univ. of California, Irvine, School of Information & Computer Science

More information about the Python-Dev mailing list

RetroSearch is an open source project built by @garambo | Open a GitHub Issue

Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo

HTML: 3.2 | Encoding: UTF-8 | Version: 0.7.4