Уведомления

Группа в Telegram: @pythonsu

#1 Окт. 5, 2017 19:14:06

ayan
Зарегистрирован: 2017-10-05
Сообщения: 1
Репутация: +  0  -
Профиль   Отправить e-mail  

поворот слова

спасибо!

Отредактировано ayan (Окт. 5, 2017 19:35:18)

Офлайн

#2 Окт. 5, 2017 19:19:42

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

поворот слова

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"))



Офлайн

#3 Окт. 5, 2017 19:21:03

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

поворот слова

Вообще, это тот случай, когда рекурсия только мешает, без неё алгоритм получается тривиальный



Офлайн

#4 Окт. 5, 2017 19:24:03

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

поворот слова

Но если очень хочется рекурсии, то решать надо так

 def reverse(s):
    if len(s) == 1:
        return s
    res = s[-1] + reverse(s[:-1])
    return res
print(reverse("abcd"))



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version