Рекурсия

Sergey ShishkinSergey Shishkin
2 min read

Есть идеи, концептуализация которых и, соответственно, формализация приводят к обратному результату, к сакрализации. Хотя идея простая и каждый сталкивался с ней уже в школе при обозначении её как индукцииn = n + 1рекурентной формулойрекрентным соотношением … наконец, рекурсивной функции, которая даже является базовой в нескольких вычислительных моделях, например, того же лямбда-исчисления. Кто-то со мной категорически не согласится, но я вижу проявление этого феномена, например, в итерационных процессах и даже в определении неявной функции. Когда вы реализуете метод прогонки и вам надо сэкономить на введении дополнительных параметров, то реализуете рекурсию легко и просто, даже не замечая этого, как “миллиметры ртутного столба, которые постоянно давят на вас …”.

В PicoLisp можно реализовать рекурсию, которую автор называет взаимной - когда одна функция вызывает другую и, соответственно, наоборот. То есть без “языкового расширения“. Более того, есть, прямо рекрсивные функции, например, move, которыая может вызывать саму себя. В документации вы её не найдете, но автор приводит её в своих примерах, см. авторскую статью, посвященную этой теме!

Но есть и реализация “неявной рекурсии“, которая, собственно, и была акценирована в посте - recurse, с описанием двух функций, статической и динамической, при этом, с примерами их одновременного использования. Иногда разработчики неявную рекурсию называю анонимной. Смотрите внимательно статью. Статья очень подробная с многочисленными примерами и сравнениями … например, с той же итерацией! … в частности, с рассуждениями по поводу хвостовой рекурсии.

Авторская статья будет точно интереснее, чем мои комментарии, так что, лучше, ещё раз привести на неё ссылку - https://picolisp.com/wiki/?recurInPicoLisp . Там же, есть две ссылки на описания работы функций в PicoLisp, в принципе, понимание чего способствует и пониманию того, как работает рекурсия и преимущества динамического связывания:

0
Subscribe to my newsletter

Read articles from Sergey Shishkin directly inside your inbox. Subscribe to the newsletter, and don't miss out.

Written by

Sergey Shishkin
Sergey Shishkin

Всегда чему-то учусь!