Simple Recursive Generator Question
Andrew Koenig
ark at acm.org
Sun Dec 21 12:04:28 EST 2003
More information about the Python-list mailing list
Sun Dec 21 12:04:28 EST 2003
- Previous message (by thread): Simple Recursive Generator Question
- Next message (by thread): The Truth?
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
"MetalOne" <jcb at iteris.com> wrote in message news:92c59a2c.0312191113.569724ca at posting.google.com... > I am trying to write a generator function that yields the index position > of each set bit in a mask. > e.g. > for x in bitIndexGenerator(0x16): #10110 > print x > --> 1 2 4 > > > This is what I have, but it does not work. > Changing yield to print, shows that the recursion works correctly. > > def bitIndexGenerator(mask, index=0): > if mask == 0: return > elif mask & 0x1: yield index > bitIndexGenerator(mask >> 1, index+1) > > What am I missing? If you really want to make your program work the way you apparently intend, then you need to activate the generator you create recursively and yield each value that it yields. For example: def bitIndexGenerator(mas, index=0): if mask == 0: return elif mask & 0x1: yield index for n in bitIndexGenerator(mask >> 1, index + 1): yield n However, unless your purpose in writing this program is to improve your understanding of recursion, this technique uses much more mechanism that needed to solve the problem--as other replies have already pointed out.
- Previous message (by thread): Simple Recursive Generator Question
- Next message (by thread): The Truth?
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
More information about the Python-list mailing list