Home

On Fri, Sep 14, 2007 at 01:40:17PM +0200, Gigs_ wrote regarding Re: recursion:
>
> what i mean is how python knows to add all thing at the end of recursion
>
> >>> def f(l):
> if l == []:
> return []
> else:
> return f(l[1:]) + l[:1]
>

The following script does exactly the same thing, except it creates print
statements to help you figure out what's going on, and it binds f(L[1:]) to
a variable so you can use it again.

def f(L): # l capitalized to accentuate difference between l and 1.
print "L =", L
print "L[1:] =", L[1:]
print "L[:1] =", L[:1]
if L == []:
print "Return: ", []
return []
else:
next = f(L[1:])
print "Return: ", next, "+", L[:1], "=", next + L[:1]
return next + L[:1]

if __name__=='__main__':
print f(['A', 'B', 'C', 'D'])

Try it out. See what happens.

Cheers,
Cliff

previous
next

Re: introspection and functions
Re: Smart pointers and this
Re: About static member variable
Re: Inherited Template Overloading Problems
Re: Help getting to a derived class template given a pointer to a no-template base class
Fundacja Sloneczko
Fundacja Avalon
Pajacyk
Dzieci Niczyje
Mam Marzenie