Найти тему
programmer's notes (python and more)

О рекурсии занимательно. Рекурсия в литературе

Оглавление

Решил перенести эту статью из другого моего канала, ну несколько её переработал. Статья и о рекурсии и о философии. В общем немного занимательного.

Рекурсивные алгоритмы на языке Python | programmer's notes (python and more) | Дзен
Статьи-ссылки на материалы моего канала о программировании на языке Python | programmer's notes (python and more) | Дзен

Литература и рекурсия

Сегодня поговорим о рекурсии и не с точки зрения программиста. Рекурсия это ведь определение или получение чего то, посредством обращения к начальному базовому объекту. Не много туманное определение, не правда ли? Ну всем известен такой пример. Вы подходите с не большим зеркалом к большому. И видите, что в большом зеркале отражается маленькое, а в маленьком опять большое, а в большом опять маленькое и т.д. Базовым объектом является большое, а при помощи маленького мы снова и снова обращаемся к большому и обратно.

Лермонтов и рекурсия

Но меня то всегда интересовала рекурсия в литературе. Как-то я вспомнил стихотворение Лермонтова и очень удивился, что поэт мыслил именно рекурсивно, хотя и не владел программированием.

Сон
В полдневный жар в долине Дагестана
С свинцом в груди лежал недвижим я;
Глубокая еще дымилась рана,
По капле кровь точилася моя.

Лежал один я на песке долины;
Уступы скал теснилися кругом,
И солнце жгло их желтые вершины
И жгло меня - но спал я мертвым сном.

И снился мне сияющий огнями
Вечерний пир в родимой стороне.
Меж юных жен, увенчанных цветами,
Шел разговор веселый обо мне.

Но в разговор веселый не вступая,
Сидела там задумчиво одна,
И в грустный сон душа ее младая
Бог знает чем была погружена;

И снилась ей долина Дагестана;
Знакомый труп лежал в долине той;
В его груди, дымясь, чернела рана,
И кровь лилась хладеющей струей.

Рекурсия приходит к поэту через сон. Вообще сон ведь многими воспринимается как такой портал, куда можно уйти (войти в рекурсию), а пробуждение это такой возврат из рекурсии. Но у Лермонтова то не простая рекурсия. Герою ведь снится девушка, которой снится он. Такие рекурсии в программировании называются косвенными. Воистину Лермонтов мыслил как настоящий программист. А если точнее, то новое это простое забытое старое.

Маршак и рекурсия

Ну, конечно, если поискать, в стихах найдутся еще примеры рекурсии. Вот известное стихотворение (из народной английской поэзии) в переводе Самуила Яковлевича Маршака "Дом, который построил Джек":

Вот дом,
Который построил Джек.
А это пшеница,
Которая в тёмном чулане хранится
В доме,
Который построил Джек.
А это весёлая птица-синица,
Которая часто ворует пшеницу,
Которая в тёмном чулане хранится
В доме,
Который построил Джек.
Вот кот,
Который пугает и ловит синицу,
Которая часто ворует пшеницу,
Которая в тёмном чулане хранится
В доме,
Который построил Джек.
Вот пёс без хвоста,
Который за шиворот треплет кота,
Который пугает и ловит синицу,
Которая часто ворует пшеницу,
Которая в тёмном чулане хранится
В доме,
Который построил Джек.
А это корова безрогая,
Лягнувшая старого пса без хвоста,
Который за шиворот треплет кота,
Который пугает и ловит синицу,
Которая часто ворует пшеницу,
Которая в тёмном чулане хранится
В доме,
Который построил Джек.
А это старушка, седая и строгая,
Которая доит корову безрогую,
Лягнувшую старого пса без хвоста,
Который за шиворот треплет кота,
Который пугает и ловит синицу,
Которая часто ворует пшеницу,
Которая в тёмном чулане хранится
В доме,
Который построил Джек.
А это ленивый и толстый пастух,
Который бранится с коровницей строгою,
Которая доит корову безрогую,
Лягнувшую старого пса без хвоста,
Который за шиворот треплет кота,
Который пугает и ловит синицу,
Которая часто ворует пшеницу,
Которая в тёмном чулане хранится
В доме,
Который построил Джек.
Вот два петуха,
Которые будят того пастуха,
Который бранится с коровницей строгою,
Которая доит корову безрогую,
Лягнувшую старого пса без хвоста,
Который за шиворот треплет кота,
Который пугает и ловит синицу,
Которая часто ворует пшеницу,
Которая в тёмном чулане хранится
В доме,
Который построил Джек.
Вот дом, который построил Джек (изображение в свободном доступе)
Вот дом, который построил Джек (изображение в свободном доступе)

Видите, как здорово разворачивается здесь рекурсия. Кстати, конца рекурсии ни в том ни в другом стихотворении не видно. У Маршака есть и другой перевод, который можно назвать рекурсивным стихотворением. Это "Баллада о королевском бутерброде". Не буду его здесь приводить, но там базовое начало это король, которому захотелось га завтрак сливочного масла.

Никто не скажет, будто я
Тиран и сумасброд,
За то, что к чаю я люблю
Хороший бутерброд!

Повесть "Портрет" Гоголя и рекурсия

В прозе рекурсии тоже не мало. Мое любимое произведение это "Портрет" Н.В. Гоголя. Герой повести, бедный художник Чертков, приносит в дом таинственный портрет. На портрете изображен старик. И вот далее Чертков, судя по всему засыпает. Потом он, уже во сне, закрывает портрет простыней и снова засыпает, уже во сне (следующий рекурсивный шаг). А далее он видит, как этот старик сходит с портрета. Ну не буду раскрывать всю фабулу. Она очень интересна. Но далее он просыпается. Но оказывается он проснулся во сне. Т.е. это выход из рекурсии, пошаговый выход. Потом он снова просыпается. В общем Гоголь обрисовал типичный вход и выход из рекурсивной функции. Дааа, русские классики мыслили рекурсивно.

Михаил Булгаков и рекурсия

Еще один пример, это, конечно, "Мастер и Маргарита" М.А. Булгакова. Там Мастер пишет роман о Понтии Пилате и бедном нищем проповеднике Иешуа. Но герои романа потом являются, чтобы повлиять на судьбу Мастера, а тот в свою очередь под влиянием, в том числе и этих обстоятельств, меняет судьбу своих героев. Каково?

В общем, когда в очередной раз у вас в программе не будет получаться рекурсивный алгоритм, вспомните о русских классиках, которые прекрасно владели рекурсивным методом, и у вас обязательно все должно получиться.

Иллюстрация к повести Портрет. Н.В. Гоголь (изображение в свободном доступе)
Иллюстрация к повести Портрет. Н.В. Гоголь (изображение в свободном доступе)