Ответ на пост «Декретник»19
А потом эти люди говорят:
«Я никогда не буду голосовать за партию жуликов и воров!».
Рекурсия
Рекурсия – очень популярное явление и в нашем реальном мире, и в мире математической абстракции. Понять, что это такое, очень просто. Встаньте между двумя зеркалами. В результате вы увидите большое количество собственных отображений. Большое, но не бесконечное. В нашем мире нет ничего бесконечного, кроме надежд и обещаний. Мораль этой истории такая. Всегда следует учитывать объем имеющихся в распоряжении ресурсов, включая терпение задействованных в процессе персон.
© 2024 Константин Оборотов
Петр Иванович – очень богатый человек. У него своя собственная старая большая фирма. И также своя собственная молодая и стройная жена Тамара. Шли годы, и жизнь Петра Ивановича была стабильной, богатой, счастливой и гармоничной.
Но стали Петра вдруг одолевать мрачные мысли. За что его любит жена? За то, что он такой умный и духовно развитый? Или просто за то, что богатый? К тому же их сын почему-то очень уж похож на нанятого садовника. А дочь вообще на горничную. Поневоле задумаешься!
Садовника и горничную Петр уволил по-тихому, под предлогом, что те, якобы воровали серебряные ложки и редкие семена фиолетовых роз. Петр сделал также тщательную генетическую экспертизу, которая подтвердила его отцовство.
Но осадочек-то, в виде двух детей, остался! Эти дети очень раздражающе напоминали о бывших подозрительных работниках, что было крайне неприятно.
По совету друзей Петр обратился за помощью к опытному психологу, некоему Василию Ивановичу Паку, тонкому знатоку человеческих душ.
- Есть у меня подозрение, что когда я отдам Богу душу, жена моя не будет долго грустить, а, наоборот, обрадуется и начнет кутить на полную катушку, проедая мой капитал, - делился наболевшим Петр с опытным психологом.
- Давайте, сделаем так. Вы притворитесь мертвым, а мы посмотрим и зафиксируем реакцию Вашей жены, - предложил Пак, - так нам откроется истина.
Петр согласился. Было очень любопытно узнать, как среагирует жена.
- О, Боже, горе-то какое! – закричала Тамара в ходе тестирования и упала на колени перед гробом, - позвольте мне лечь в могилу рядом с ним! Если так нельзя, даю вечный обет безбрачия, и траур мой в черных одеждах будет длиться вечно. Надеюсь, что мода на черную классику никогда не пройдет.
Непосвященному человеку тут покажется, что все ясно. Но на самом деле, не все так просто. Тонкость в том, что получив гонорар от Петра, ушлый Василий Пак пошел к Тамаре. Предложил ей за небольшую премию рассказать важный секрет. Тамара согласилась и, благодаря полученной информации, разыграла этот спектакль.
Но и это еще не все! После того, как Тамара отыграла свою роль и ее в обморочном состоянии вынесли из комнаты скорби, психолог на ушко рассказал "покойнику" причину достойного поведения вдовы.
Конечно, мнимый покойник щедро вознаградил Василия Пака. А тот снова рванул к Тамаре с новой ценной информацией.
Тамара тяжело вздохнула, затем сняла с себя золотые сережки и отдала их психологу.
Василий Пак поморщился, он больше любил наличку, но сережки принял. На всякий случай, если вдруг его заластает полиция, он вставил они сережки себя в уши. Отмазка была заготовлена такая. Мол, это подарок от покойной бабушки, и он в память о ней носит эти сережки все время, никогда не снимая.
Весело позвякивая сережками, психолог ломанулся обратно к "покойному", на ходу сочиняя речь о том, что "вдова" в курсе всех предыдущих итераций, а также о новых коварных планах "вдовы".
Долго так бегал Василий Пак между двумя супругами, пока почти совсем их не обанкротил.
Наконец, терпение и финансы Петра Ивановича подошли к концу.
- Послушайте, у вас, вообще, совесть есть? – задал он риторический вопрос, - вам непонятно, что это не может продолжаться бесконечно? И что это добром для вас не закончится? Сколько у Вас сейчас хвостов? Хотите, чтобы я Вам еще один пристроил? Немедленно проснитесь!
Студент Василий поднялся и, под смешки аудитории, осоловевшими глазами посмотрел на Петра Ивановича.
Шла лекция по теме "Проблемы при использовании рекурсивных функций".
Тут преподаватель кафедры информатики Петра Иванович сделал небольшую паузу, задумчиво посмотрел на заспанное лицо Василия и продолжил.
- А теперь задание! Напишите на "Питоне" рекурсивную функцию, определите максимальное количество возможных вложений. И каким образом эта наглая функция "шантажист" наконец грохнется, исчерпав лимит памяти или доверия указанных в тексте персон. Помните, в нашем мире нет ничего бесконечного, кроме надежд и обещаний. А тому, кто отгадает, кто же именно, наконец, убьет Василия Пака, покойник или вдова, получит дополнительный балл за сообразительность. Работаем, работаем!
...
Первоисточник:
===
Ссылки по теме:
Маленькие локальные программы на JS, серия 1
Пример типичного использования рекурсии
Сочинение
Хочешь стать разработчиком? Садись и разрабатывай!
===
От перепутья к перепутью, часть первая: Порядковый разбор КС-языков методом рекурсивного спуска
Предыдущая статья:Синтаксические диаграммы КС-языков - Рисунок порядка КС-языков в vk.com.
В правилах вывода неконечные символы по своей сути являются некоторыми языковыми понятиями. Условимся что конечные символы записываются в ' (одинарные кавычки), неконечные курсивом, тогда язык целых чисел мы можем записать так:
целое → '+' хотя_бы_одна | '-' хотя_бы_одна | цифра ещё_или_конец
хотя_бы_одна → цифра ещё_или_конец
ещё_или_конец → цифра ещё_или_конец | '⊥'
цифра → '0' | '1' | '2' | '3' | '4' | '5' | '6' | '7' | '8' | '9'
В дальнейшем изложении термин понятие будет тождественен неконечному символу. Приступи к описанию метода рекурсивного спуска:
Для каждого понятия создаётся отдельная распознающая процедура.
До начала работы процедуры текущим является первый символ разбираемого понятия, назовём его кон (сокр. от конечный и от смыслов «партия в игре», «черта», «граница»).
Исполняя процедуру считываем входящие символы относящиеся к понятию, либо говорим об ошибке. Если понятие содержит в себе другие понятия, то вызываем их процедуры.
По завершению процедуры коном становится первый символ выходящий за рамки понятия.
Первой вызывается процедура стартового понятия, то есть стартового неконечного символа грамматики. Первый кон - первый символ входящей цепочки. По окончанию процедуры поток символов должен быть завершён. Общий вид можно описать так:
Название «рекурсивный спуск» исходит из того, что при наличии самовложения в грамматике вызовы процедур будут рекурсивными. Распознавание начинается со стартового неконечного, поэтому разбор нисходящий.
На прошлом уроке мы рассматривали рисунок порядка, так вот каждый его отдел представляет из себя схему алгоритма отдельной процедуры. Ниже в таблице участки отдела обозначены: У, У₁, У₂, …, Уₙ. Их соответствующие фрагменты процедуры: Ф(У), Ф(У₁), Ф(У₂), … Ф(Уₙ), будем считать что они вынесены в свои процедуры:
Принцип анализа по схемам отделов состоит в том, что сверяя очередной символ с маяком (см. пояснение п.4), мы выбираем путь как дальше будут сверятся символы распознаваемой цепочки.
В следующей статье мы рассмотрим разбор арифметических выражений.
З. Ы. Минутка этимологии: Слово процедура происходит от лат. procedere, которое состоит из pro и cedere. Сedere значит «идти» или «двигаться», pro - «вперёд», от сюда procedere - продвигаться, проходить. Слово рекурсия происходит от лат. recursio, re - указывает на повторность действия, так же как «пере», cursio однокоренное с cursus - курс, путь, то есть recursio - это перепутье, только в том узком смысле, что пересечение дороги ведёт к той же дороге.
Не забудь подписаться.