Алгоритмы

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

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

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

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

  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

Библиотека Pydantic: валидация данных на Python

Pydantic - это мощная библиотека проверки данных и управления настройками для Python, созданная для повышения…

2 дня ago

7 наилучших библиотек визуализации Python на 2024 год

Python предлагает набор библиотек, удовлетворяющих различные потребности в визуализации, будь то академические исследования, бизнес-аналитика или…

6 дней ago

Как преобразовать строку в байты в Python

В Python для представления данных в двоичной форме можно использовать байты. Из этой статьи вы…

2 недели ago

Что такое Werkzeug?

В этой статье рассказывается о том, что такое Werkzeug и как Flask использует его для…

3 недели ago

Как прибавить дни, месяцы и годы к дате в Python

При работе с датами часто возникает необходимость прибавлять к дате или вычитать из нее различные…

4 недели ago

Социальная аутентификация в приложении на Flask

В этом руководстве мы рассмотрим, как добавить социальную аутентификацию с помощью GitHub и Google в…

1 месяц ago