Шаг 69.
Рекурсия на Python. Линейная рекурсия I: основные алгоритмы. Системы счисления. Строки. Обращение строки

    На этом шаге мы рассмотрим одну из задач на строки.

    В этом и следующем шагах разбираются две задачи, касающиеся строк, которые представляют собой последовательности (цепочки) символов и являются фундаментальным типом данных во многих языках программирования.

Обращение строки

    Рассмотрим задачу обращения строки. В частности, создадим функцию f(), которая получает на входе строку и возвращает её обращение - цепочку из тех же символов, следующих в обратном порядке. Например, f('abcd') = 'dcba'.

    Размер задачи - это длина входной строки. Начальное условие выполняется при пустой входной строке, когда результатом, очевидно, является тоже пустая строка. Для уменьшения размера задачи в рекурсивном условии следует исключать по одному символу входной строки. Явные кандидаты для этого - первый или последний символ строки. Исключение первого символа приводит к следующей схеме, где входная строка s записывается в виде последовательности символов s0 s1 ... sn-2 sn-1:

    Таким образом, функция должна просто добавить первый символ в конец результата подзадачи, связанной с s1 ... sn-2sn-1 (символ "+" обозначает конкатенацию строк). Эта рекурсивная функция вместе с начальным условием реализована в примере 4.11.


Пример 4.11. Обращение строки s
1
2
3
4
5
def reverse_string(s):
    if s == '':
        return ''
    else:
        return reverse_string(s[1:]) + s[0]    
Архив с файлом можно взять здесь.

    На следующем шаге мы рассмотрим еще одну задачу на строки.




Предыдущий шаг Содержание Следующий шаг