recursion depth problem

Alex Martelli aleax at mac.com
Sun Apr 22 22:23:05 EDT 2007


Steven Bethard <steven.bethard at gmail.com> wrote:
   ...
> >>>>> import sys
> >>>>> def ch4(item, n=0):
> >>>>>    if n < len(item):
> >>>>>            if item[n] == '0':
> >>>>>                    item[n] = '1'
> >>>>>                    print ''.join(item)
> >>>>>                    ch4(item)
> >>>>>            elif item[n] == '1':
> >>>>>                    item[n] = '0'
> >>>>>                    ch4(item, n+1)
> >>>>> ch4(list(sys.argv[1]))
   ...
> > for interest sake:  is my method unredeemable?
> 
> Let's just say that I don't currently see an obvious way of redeeming
> it. ;-)

Change the outer if into a while, and the recursive calls into proper
assignments to n.  They're both tail-recursive calls, so this won't
change the semantics, as it happens.


Alex



More information about the Python-list mailing list