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
-- 
http://mail.python.org/mailman/listinfo/python-list

Reply via email to