Описание задачи
Программа принимает на вход строку и проверяет при помощи рекурсии, является эта строка палиндромом или нет.
Решение задачи
- Принимаем на вход строку и сохраняем ее в отдельную переменную.
- Передаем эту строку в качестве аргумента в рекурсивную функцию.
- В качестве базового условия рекурсии принимаем значение длины строки меньше единицы. В этом случае выводим результат
True. - В противном случае проверяем равенство первого и последнего элементов строки. Если они равны, то опять вызываем нашу рекурсивную функцию, но передаем в нее в качестве аргумента строку без уже проверенных символов. Если нет, то условия основного свойства палиндрома нарушены, и мы выводим значение
False. - Далее, в зависимости от результата работы функции, мы выводим ответ на вопрос нашей задачи. Если результат
True, то строка является палиндромом, еслиFalse, то нет. - Конец.
Исходный код
Ниже дан исходный код, который проверяет (с использованием рекурсии), является строка палиндромом или нет. Результаты работы программы также даны ниже.
def is_palindrome(s):
if len(s) < 1:
return True
else:
if s[0] == s[-1]:
return is_palindrome(s[1:-1])
else:
return False
a = str(input("Введите строку:"))
if (is_palindrome(a) == True):
print("Данная строка палиндром!")
else:
print("Данная строка не палиндром!")
Объяснение работы программы
- Пользователь вводит строку, которая записывается в переменную
a. - Передаем переменную
aв качестве аргумента в рекурсивную функциюis_palindrome(). - В качестве базового условия рекурсии принимаем значение длины строки меньше единицы. В этом случае выводим результат
True. - В противном случае проверяем равенство первого и последнего элементов строки. Выбираем эти элементы при помощи индексов:
s[0] == s[-1]. Если они равны, то опять вызываем нашу рекурсивную функцию, но передаем в нее в качестве аргумента строку без проверенных символов, используя для этого следующий срез строки:s[1:-1]. Если первый и последний элементы не равны, то условия основного свойства палиндрома нарушены, и мы выводим значениеFalse. - Далее, в зависимости от результата работы функции, мы выводим ответ на вопрос нашей задачи. Если результат
True, то строка является палиндромом, еслиFalse, то не является.
Результаты работы программы
Пример 1: Введите строку:mom Данная строка палиндром! Пример 2: Введите строку:hello Данная строка не палиндром!

