[Tutor] Maximum recursion depth problem.

Wesley Brooks wesbrooks at gmail.com
Tue Aug 3 12:02:21 CEST 2010


Dear Python Users,

I'm having real difficulty understanding why the following is not
working and hoped I've either missed something obvious of I'm doing
something wrong!

class A:
    def break_down(self, value, base, broken_list=[]):
        power = len(broken_list)
        digit = int((value % (base ** (power + 1))) / (base ** power))
        value -= digit * (base**power)
        broken_list.append(digit)
        if value != 0:
            return self.break_down(value, base, broken_list=broken_list)
        else:
            return broken_list[:]

if __name__ == '__main__':
    a = A()
    d_list_1 = a.break_down(34567, 256)
    print d_list_1
    a2 = A()
    d_list_2 = a2.break_down(34567, 256)
    print d_list_2

When the above runs it fails with the error "RuntimeError: maximum
recursion depth exceeded while calling a Python object".

The following also does not work:

if __name__ == '__main__':
    a = A()
    digit_list_1 = a.break_down(34567, 256)
    print digit_list_1
    del digit_list_1, usc
    a2 = A()
    digit_list_2 = a2.break_down(34567, 256)
    print digit_list_2

but the following two do work:

if __name__ == '__main__':
    a = A()
    digit_list_1 = a.break_down(34567, 256)
    print digit_list_1
    #a2 = A()
    #digit_list_2 = a2.break_down(34567, 256)
    #print digit_list_2

if __name__ == '__main__':
    #a = A()
    #digit_list_1 = a.break_down(34567, 256)
    #print digit_list_1
    a2 = A()
    digit_list_2 = a2.break_down(34567, 256)
    print digit_list_2

I'm a little stumped as I don't think I'm using any global or class
variables? Any help would be much appreciated.

Yours Faithfully,

Wesley Brooks


More information about the Tutor mailing list