tsdima писал(а):
Я понимаю, к чему ты клонишь: на самом деле это должен быть не goto, а call (т.е. опять таки рекурсия), но в простейшем случае хвостовая рекурсия оптимизируется в цикл, т.е. в gotoЯ знаю, что оптимизируется.
Но еще я знаю, что определять, что она "хвостовая" - не есть прозрачная задача.
Например, в CPP элементарное закрытие блока видимости это вовсе не конец. Это вызов finally-блока. Который двже ты не видишь, и запросто можешь пропустить.
В Дельфи, между прочим - тоже вызывается finally-блок. Если в локальных переменных есть "особые" типы. Какие - задача не для средних умов, в отличии от "сложного" CPP
И клоню я не совсем к тому, о чем ты говоришь.
1) Прежде всего - нет тут никакого изящества
2) Я не клоню к тому, что это должен быть call, я клоню к тому, что ВСЯ ВЕТКА с "этого места" должна быть помещена в динамический мультик в режиме OnlyOnce
3) И я с интересом посмотрел бы на технологию такого помещения: какие вертикальные связи перейдут в связи между уровнями рекурсии