Алгоритмы

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

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

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

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

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

Ilyaragalin

Recent Posts

10 удалённых Python-вакансий

Если вы ищете работу на Python, на Talanto.work сейчас есть варианты для junior, middle, senior…

6 месяцев ago

Где искать Python-вакансии в 2026 году: зачем на Talanto.work появился отдельный сценарий поиска

Рынок Python-вакансий большой, но удобным его назвать сложно. Формально вакансий много, однако в реальном поиске…

6 месяцев ago

Срезы в Python со всеми подробностями

Срезы в Python — это больше, чем a[2:7]. В статье — быстрый разбор полезных приёмов:…

8 месяцев ago

Возведение в степень в Python: полное руководство

В этой статье мы рассмотрим возведение в степень в Python с помощью различных методов, от…

9 месяцев ago

Как удалить дубликаты из списка Python?

Дубликаты в списке Python — частая проблема. В статье показано, как быстро убрать повторы, в…

9 месяцев ago

Виртуальный (shared) хостинг от SpaceWeb: технический обзор

Услуга виртуального хостинга на SpaceWeb позволяет арендовать часть сервера (shared-сервера) и разместить на нём свой…

11 месяцев ago