proctor wrote: > 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?
Let's just say that I don't currently see an obvious way of redeeming it. ;-) STeVe -- http://mail.python.org/mailman/listinfo/python-list