On Sunday 14 October 2007 5:06:19 pm Dmitri O.Kondratiev wrote: > The function I wrote (below) reverses lists all right: > > def reverse(xs): > if xs == []: > return [] > else: > return (reverse (xs[1:])) + [xs[0]] > > >>> reverse ([1,2,3]) > > [3, 2, 1] > > Yet when I try to reverse a string I get: > >>> reverse ("abc") > > ... > ... > ... > > File "C:\wks\python-wks\reverse.py", line 5, in reverse > > return (reverse (xs[1:])) + [xs[0]] > > File "C:\wks\python-wks\reverse.py", line 5, in reverse > > return (reverse (xs[1:])) + [xs[0]] > > File "C:\wks\python-wks\reverse.py", line 2, in reverse > > if xs == []: > > RuntimeError: maximum recursion depth exceeded in cmp > > > > What's wrong? Why recursion never stops? > > Thanks, > Dima
I didn't try anything but it looks like your calling your function in your else block like this (e.g., reverse('bc')) everytime. your else block isn't really ending itself, just repeating itself. I could be wrong but from a quick glance you'll need to end it for sure when dealing with recursion. maybe also trying to reverse using the iterator function reversed() or this shortcut may help e.g, 'abc'[::-1] -> 'cba'. good luck! -- Best Regards Victor B. Gonzalez -- http://mail.python.org/mailman/listinfo/python-list