recursion
Marc 'BlackJack' Rintsch
bj_666 at gmx.net
Fri Sep 14 08:04:51 EDT 2007
On Fri, 14 Sep 2007 13:40:17 +0200, Gigs_ wrote:
> sorry i think that i express wrong. having problem with english
>
>
> what i mean is how python knows to add all thing at the end of recursion
Because you have written code that tells Python to do so. ;-)
> >>> def f(l):
> if l == []:
> return []
> else:
> return f(l[1:]) + l[:1]
>
>
> f([1,2,3])
>
> recursion1 f([2,3]) + [1]
>
> recursion2 f([3]) + [2] or [2, 1]?
>
> recursion3 f([]) + [3] or [3, 2, 1]
Both alternatives in recursion 2 and 3 are wrong. You have to simply
replace the function invocation by its result which gives:
f([1, 2, 3])
r1 f([2, 3]) + [1]
r2 f([3]) + [2] + [1]
r3 f([]) + [3] + [2] + [1]
r4 [] + [3] + [2] + [1]
And now the calls return:
r3 [3] + [2] + [1]
r2 [3, 2] + [1]
r1 [3, 2, 1]
> i dont get all this
>
> >>> def f(l):
> if l == []:
> print l
> return []
> else:
> return f(l[1:]) + l[:1]
>
> >>> f([1,2,3])
> []
> [3, 2, 1] # how this come here? how python save variables from each
> recursion?
There is not just one `l` but one distinct `l` in each call.
Ciao,
Marc 'BlackJack' Rintsch
More information about the Python-list
mailing list