Проверка при помощи рекурсии, является ли строка палиндромом

Описание задачи

Программа принимает на вход строку и проверяет при помощи рекурсии, является эта строка палиндромом или нет.

Решение задачи

  1. Принимаем на вход строку и сохраняем ее в отдельную переменную.
  2. Передаем эту строку в качестве аргумента в рекурсивную функцию.
  3. В качестве базового условия рекурсии принимаем значение длины строки меньше единицы. В этом случае выводим результат True.
  4. В противном случае проверяем равенство первого и последнего элементов строки. Если они равны, то опять вызываем нашу рекурсивную функцию, но передаем в нее в качестве аргумента строку без уже проверенных символов. Если нет, то условия основного свойства палиндрома нарушены, и мы выводим значение False.
  5. Далее, в зависимости от результата работы функции, мы выводим ответ на вопрос нашей задачи. Если результат True, то строка является палиндромом, если False, то нет.
  6. Конец.

Исходный код

Ниже дан исходный код, который проверяет (с использованием рекурсии), является строка палиндромом или нет. Результаты работы программы также даны ниже.

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("Данная строка не палиндром!")

Объяснение работы программы

  1. Пользователь вводит строку, которая записывается в переменную a.
  2. Передаем переменную a в качестве аргумента в рекурсивную функцию is_palindrome().
  3. В качестве базового условия рекурсии принимаем значение длины строки меньше единицы. В этом случае выводим результат True.
  4. В противном случае проверяем равенство первого и последнего элементов строки. Выбираем эти элементы при помощи индексов: s[0] == s[-1]. Если они равны, то опять вызываем нашу рекурсивную функцию, но передаем в нее в качестве аргумента строку без проверенных символов, используя для этого следующий срез строки: s[1:-1]. Если первый и последний элементы не равны, то условия основного свойства палиндрома нарушены, и мы выводим значение False.
  5. Далее, в зависимости от результата работы функции, мы выводим ответ на вопрос нашей задачи. Если результат True, то строка является палиндромом, если False, то не является.

Результаты работы программы

Пример 1:
Введите строку:mom
Данная строка палиндром!
 
Пример 2:
Введите строку:hello
Данная строка не палиндром!