Recursion and Generators

Paramjit Oberoi p_s_oberoi at hotmail.com
Sat Jul 10 13:38:16 EDT 2004


> def testRecursion(n):
>     if n == 1:
>         yield [1]
>     else:
>         for result in testRecursion(n-1):
>             yield result + [n]
> 
> print list(testRecursion(4))

Is this what you were trying to do?

>>> def testRecursion(n):
...     if n==1:
...         yield 1
...     else:
...         for x in testRecursion(n-1): yield x
...         yield n
...
>>> list(testRecursion(1))
[1]
>>> list(testRecursion(2))
[1, 2]
>>> list(testRecursion(3))
[1, 2, 3]
>>> list(testRecursion(4))
[1, 2, 3, 4]

The generator should yield individual values one after
another, unlike a list of all values like in your example.

HTH,
-param



More information about the Python-list mailing list