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