def ispalindrome(word):
if len(word) < 2: return True
if word[0] != word[-1]: return False
return ispalindrome(word[1:-1])
And here is the best one liner
def ispalindrome(word):
return word == word[::-1]
С точки зрения общего алгоритма рекурсивная функция имеет 3 случая:
1) Осталось 0 товаров . Предмет является палиндромом по идентичности.
2) Остался 1 элемент . Предмет является палиндромом по идентичности.
3) 2 или более предмета . Удалите первый и последний элемент. Сравните. Если они совпадают, вызовите функцию на том, что осталось от строки. Если первый и последний не совпадают, элемент не является палиндромом .
Реализация самой функции предоставляется читателю в качестве упражнения :)
Если строка состоит из нуля или одной буквы, это палиндром.
Если строка имеет одинаковую первую и последнюю буквы, а остальные буквы (я думаю, что это [1: -1]
фрагмент в Python, но мой Python немного заржавел) - это палиндром, это палиндром.
Теперь напишите это как функцию палиндрома, которая принимает строку. Он вызовет сам себя.
Вот еще одна точка зрения
Палиндромная строка - это
Некоторая буква, x .
Некоторая палиндромная подстрочка.
Та же буква, ] x , повторяется.
Также обратите внимание, что вам может быть дана правильная английская фраза: «Able was I before I saw Elba». с пунктуацией. Вашему контролеру палиндрома, возможно, придется незаметно пропускать знаки препинания. Кроме того, вам, возможно, придется спокойно провести сопоставление, не рассматривая случай. Это немного сложнее.
Некоторые начальные знаки препинания. Некоторая буква, x .
Некоторая палиндромная подстрока.
Некоторая буква, x , повторяется без учета регистра. Некоторая конечная пунктуация.
И, по определению, строка нулевой длины - это палиндром. Также однобуквенная строка (после удаления знаков препинания) является палиндромом.
Поскольку мы все равно публикуем код, а однострочный текст еще не опубликован, вот:
def palindrome(s):
return len(s) < 2 or s[0] == s[-1] and palindrome(s[1:-1])
Функция должна ожидать строку. Если в строке больше одной буквы, сравните первую и последнюю букву. Если 1 или 0 букв, вернуть истину. Если две буквы равны, вызовите функцию снова со строкой без первой и последней буквы. Если они не равны, верните false.
palindrom( word):
IF length of word 1 or 0 THEN
return 0;
IF last and first letter equal THEN
word := remove first and last letter of word;
palindrom( word);
ELSE
return false;
Вот способ придумать простые рекурсивные функции ... переверните проблему и подумайте о ней таким же образом. Как сделать палиндром рекурсивно? Вот как бы я это сделал ...
def make_palindrome():
maybe:
return ""
elsemaybe:
return some_char()
else:
c = some_char()
return c + make_palindrome() + c
Тогда вы можете перевернуть его, чтобы построить тест.