обратить слово без использования циклов с помощью рекурсии

434 просмотра
0
0 Комментариев

Дефинировать функцию tagurpidi, что берет за аргумент слово и возвращает его в перевернутом виде(House = Esuoh). Без использования циклов. Функция должна работать еще если пустым словом.


Добавить комментарий

3 Answers

Python Опубликовано 14.12.2018
0

Аналог word[::-1].capitalize():

def reversed_r(word, result=''):
    return reversed_r(word[1:], word[0] + result) if word else result.capitalize()

Пример:

>>> reversed_r('House')
'Esuoh'

Можно обойтись без индексации:

def reversed_star(word, result=''):
    if not word:
        return result.capitalize()
 
    first, *rest = word
    return reversed_star(rest, first + result)

Результат тот же. См. Что значит * (звёздочка) и ** двойная звёздочка в Питоне?

Добавить комментарий
0

Рекурсия:

def definition(string, result=''):
    try:
        result += string[-1]
        definition(string[:-1], result)
    except IndexError:
        print(result)
        # print(result.capitalize())  -  'Esuoh'
 
definition('House')
# 'esuoH'

С возвратом значения (gil9red):

def definition(string, result=''):
    try:
        result += string[-1]
        return definition(string[:-1], result)
    except IndexError:
        return result.capitalize()
 
print(definition('House'))

Добавить комментарий
0

Можно еще такой вариант:

In [33]: word = 'Hello'
 
In [34]: def do(word, index=-1, reversed_word=''):
    ...:     if len(reversed_word) == len(word):
    ...:         return reversed_word.capitalize()
    ...:     reversed_word += word[index]
    ...:     return do(word, index-1, reversed_word)
    ...:
 
In [35]: do(word)
Out[35]: 'Olleh'

Добавить комментарий
Напишите свой ответ на данный вопрос.
Scroll Up