Про рекурсию

Итерация от человека. Рекурсия — от Бога. (Л. Питер Дойч)

Давно хотел собрать в одном месте всякие штуки и шутки про рекурсию. Потому что есть в ней нечто магическое :)

Определение в Википедии скучное, поэтому объясню своими словами: рекурсия, это нечто, что в процессе своего жизненного цикла вызывает само себя – то есть такой же жизненный цикл.
Для знакомых с программированием объяснение совсем простое: это функция, внутри которой происходит вызов этой же функции.

На примере статьи в словаре:

рекурсия
см. рекурсия

Когда-то на хабре кто-то не подумав сказал, что любой программный алгоритм можно реализовать с помощью операторов цикла (например for) и операторов ветвления (например if). Но на деле оператор цикла в реализации любого алгоритма не обязателен, достаточно только оператора условия, т.к. рекурсия заменяет цикл:

  1. function opa($i)
  2. { $i++;
  3.    if($i != 10)
  4.      {
  5.        echo $i; opa($i);
  6.      }
  7. }
  8. opa(1);

Рекурсия прекрасна, да :) Но самое замечательное в ней – это тонны юмора, которые нагенерировали в интернете благодаря её замечательности ;)

Это просто жесть. программисты, ёпта, живем втроем, договорились так: первый будит второго, второй третьего, третий первого… рекурсия=) в результате проспали лекцию.

У нас на обед – салат “Рекурсивный” : помидоры, огурцы, салат.

xxx: помнишь Антоха желание проиграл? так вот, я ему загадал: чтобы он 2 дня на все предметы, с которыми совершил какие-либо действия клеил стикер с этим действием…)))
yyy:
я бы точно клеил бы на стикер стикер с надписью наклеил
ушел бы в глубокую рекурсию

мелкого (сына 10 мес) вогнал в рекурсию…
одна соска во рту. дал вторую. первую от радости выплюнул. вставил вторую. услышал как чтото упало. обрадовался увидев первую соску. выронил вторую. засунул первую в рот. услышал как чтото упало… уже 5 минут меняет их

Сегодня работал с отцом, он мне говорит типа “хочешь рекурсию покажу?”, я типа “ну давай”. Он берет втыкает вилку дрели в удлинитель, а вилку удлинителя втыкает в свободную розетку этого же удлинителя, жмет кнопку, дрель начинает работать…
Блин наверное у меня было очень смешное лицо, он ржал до вечера, а я еще долго втыкал почему же так получается. Оказалось дрель была на аккумуляторе.

В указах президента Украины тоже бывает рекурсия.

В философии эгоизм и альтруизм – это та же рекурсия. Как яйцо и курица – не понятно, что первично, доброе намерение или собственная выгода. И так до бесконечности – одно вызывает другое.

РекурсияИнтересным экземпляром среди родственников рекурсии является
Рекурсивная утка (лат. Fractal Duck, сокр. FracDuck, Fuck) — структура, обладающая биолого-математическим дуализмом: с одной стороны — это птица, с другой — вызывающая сама себя математическая функция. В момент самовызова предыдущий экземпляр утки аннигилирует (так называемый самовывоз РУ), а последующий появляется в случайной точке пространства-времени. Самовывоз может происходить как в случайный момент времени, так и по наступлению какого либо события.

Кстати, в детстве вы, как и я, наверняка баловались с рекурсией, когда подходили к большому зеркалу с маленьким зеркальцем, чтобы вызвать бесконечное отражение обоих зеркал друг в дружке. Было такое? :)

А еще есть рекурсивные акронимы (аббревиатуры):

  • GNU (англ. «GNU’s Not UNIX» — «GNU — это не UNIX»);
  • LAME (англ. «LAME Ain’t an MP3 Encoder» — «LAME — это не кодер mp3»);
  • PHP (англ. «PHP: Hypertext Preprocessor» — «PHP: препроцессор гипертекста»);
  • WINE (англ. «WINE Is Not Emulator» — «WINE — это не эмулятор»);
  • YAML (англ. «YAML Ain’t Markup Language» — «YAML — не язык разметки»);
  • XNA (англ. «XNA’s Not Acronymed» — «XNA — не акроним»);
  • VISA (англ. «Visa International Service Association»).

Пока что на этом всё.
Кстати, рекурсия на столько мистична, что пока я набирал этот текст, ноут дважды уходил в синий экран.

5 comments

  1. > Когда-то на хабре кто-то не подумав сказал, что любой программный алгоритм можно реализовать с помощью операторов цикла и условия. Если бы этот человек знал больше о рекурсивных функциях, он не спорол бы такую глупость, потому что цикл легко реализуется с помощью того, о чем мы здесь сейчас говорим.

    Не ясно, что хотел сказать автор этого абзаца.

  2. Nixie, эээ… переписал абзац

  3. Классная статья))Рекурсия действительно интересная штука.
    Кстати, понравился больше сего комикс, наверное потому, что я его, в отличие от шуток, раньше не видел.

  4. Я частенько читаю ваш блог и иногда пападаются интереные новасти :) P.S ваш сайт у меня в закладках ;)

  5. Прикольная фигня xD

Оставить комментарий