On Apr 22, 2:06 pm, Steven Bethard <[EMAIL PROTECTED]> wrote: > proctor wrote: > > On Apr 22, 1:24 pm, Michael Bentley <[EMAIL PROTECTED]> wrote: > >> On Apr 22, 2007, at 1:49 PM, proctor wrote: > > >>> i have a small function which mimics binary counting. it runs fine as > >>> long as the input is not too long, but if i give it input longer than > >>> 8 characters it gives > >>> RuntimeError: maximum recursion depth exceeded in cmp > >>> i'm not too sure what i am doing improperly. is there really a lot of > >>> recursion in this code? > >>> ================== > >>> 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])) > >>> ================== > >> Yes. There really is *that* much recursion in that code. 502 levels > >> with input length of 8 characters, 1013 with 9 characters, 2035 with > >> 10 characters... There's a pattern there ;-) > > > ok, thanks michael! > > > is there a way to avoid it here? how could i write this better, (if > > at all)? > > Google for permutation-like recipies: > > http://www.google.com/search?q=Python+permutations > > Use the code from the first hit:: > > >>> for x in xselections('01', 8): > ... print ''.join(x) > ... > 00000000 > 00000001 > 00000010 > ... > 11111101 > 11111110 > 11111111 > > Explaining to your teacher why your code uses generators when you > haven't been taught them yet is left as an exercise to the reader. ;-) > > STeVe
this is really nice, thanks steve. much slicker than my code. for interest sake: is my method unredeemable? thanks very much! sincerely, proctor -- http://mail.python.org/mailman/listinfo/python-list