Как я могу вернуть рекурсивный вызов функции? - PullRequest
1 голос
/ 26 апреля 2019

Задача:

Написать рекурсивную функцию is_palindrome, которая принимает строку с именем word в качестве параметра и возвращает True, если длина слова меньше или равна 1. Если длинаof word больше 1, функция должна возвращать False, если первый символ слова отличается от последнего символа слова.Если длина слова больше 1, а первый и последний символы строки идентичны, функция должна вернуть результат is_palindrome () с параметром word, в котором удалены первый и последний символы (например, is_palindrome ("anna)") должен вернуть результат is_palindrome (" nn ")).

Мой код:

def is_palindrome(word):
    if len(word) <= 1:
        return True
    if len(word) > 1:
        if word[0] != word[len(word) - 1]:
            return False
        elif word[0] == word[len(word) - 1]:
            return word[1:(len(word) - 1)]

possible_palindrome = input("Enter a word/phrase to check: ")
if is_palindrome(possible_palindrome):
    print(possible_palindrome, "is a palindrome")
else:
    print(possible_palindrome, "is not a palindrome")

Обратная связь с оценкой:

Вам необходимо вернуть рекурсивный вызов is_palindrome

1 Ответ

0 голосов
/ 26 апреля 2019

Проверьте конечные точки строки (первый и последний символ), если они равны, возвращают вызов оставшимся (все символы, кроме первого и последнего):

def is_palindrome(word):
    if len(word) <= 1:
        return True
    if word[0] != word[-1]:
        return False
    return is_palindrome(word[1:-1])

Примеры:

>>> is_palindrome("f")
True
>>> is_palindrome("foo")
False
>>> is_palindrome("foof")
True
...