Форум сайта python.su
0
спасибо!
Отредактировано ayan (Окт. 5, 2017 19:35:18)
Офлайн
568
ayan
Потому что res объявлена в области видимости функции, на каждой итерации рекурсии это будет новая переменная. Вот так будет работать
def reverse(str): res = '' def _reverse(): nonlocal res nonlocal str if len(str) > 0: res += str[-1] str = str[:-1] _reverse() _reverse() return res print(reverse("abcd"))
Офлайн
568
Вообще, это тот случай, когда рекурсия только мешает, без неё алгоритм получается тривиальный
Офлайн
568
Но если очень хочется рекурсии, то решать надо так
def reverse(s): if len(s) == 1: return s res = s[-1] + reverse(s[:-1]) return res print(reverse("abcd"))
Офлайн