1 заметка с тегом

рекурсия

Рекурсия

Если моя гипотеза про фракталы верна, то нет ничего удивительного в том, что на собеседовании я очень люблю задавать задачу на рекурсию. Идея не нова, я её нагло украл у Джоэля. Джоэль предлагал задавать вопросы на указатели и рекурсию, я пока ограничился второй, потому что в PHP указателей нет, у нас есть ссылки, но они используются не так часто, поэтому насиловать ими мозг кандидату смысла особо нет.

Традиционно для тестирования понимания рекурсии дают задачу на факториал. Я решил, что факториал — это не модно и придумал задачу в рамках традиционной для похапешников предметной области — вывести дерево категорий онлайн-магазина.

Задача не самая лучшая, но на её примере забавно посмотреть, как люди с ней мучаются. Например, один кандидат в первой версии забыл передать $depth, и ему пришлось дописывать его в решение на листике. Что ещё классно, что у этой задачи нет одного чёткого решения, и каждый изобретает свой велосипед (типичная фигня в программировании). Это видно даже по комментариям к задаче на квизфуле. Так что таким образом заодно можно увидеть, как человек мыслит и какими шаблонами решает задачу. Например, решение через регекспы меня очень позабавило, я бы такого человека взял просто за то, что он пошёл нестандартным путём и нашёл не правильное, но неплохое решение.

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

Aktualisierung (22.01.2015): Гриша на яваскрипте написал кошерный вариант — http://jsfiddle.net/cu20x6p8/4/

ПС: Вспомнил, что PHP содержит рекурсию в самом имени. То-то я удивляюсь, чего меня штырит так-то?