Описание задачи
Программа принимает на вход строку и проверяет при помощи рекурсии, является эта строка палиндромом или нет.
Решение задачи
- Принимаем на вход строку и сохраняем ее в отдельную переменную.
- Передаем эту строку в качестве аргумента в рекурсивную функцию.
- В качестве базового условия рекурсии принимаем значение длины строки меньше единицы. В этом случае выводим результат
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 Данная строка не палиндром!