> Во многих языках вообще нет оптимизации хвостовой рекурсии.Это к чему было сказано?
> А там, где она
> есть она работает абсолютно так-же, как банальный цикл. На низком уровне.
> На уровне ассемблера есть инструкции сохранения стека, перехода на адрес нужной
> функции, возврата из этой функции и т.п. Так вот, на уровне
> машинных инструкций оптимизация хвостовой рекурсии выливается в исполнение одного и того
> же кода функции в цикле, без обязательного вызова процедуры сохранения/восстановления
> стека.
Цикл в ассеблере (x86) - это инструкция LOOP. Много вы видели, что C'шний цикл транслировался в LOOP? В 99% он транслируется в Jx - банальный условный переход - при чём здесь "цикл"?
> Ваш механизм - это разворачивание рекурсивного вызова функции в цикл(по
> своей сути, если не по форме). Объясните, что мешает вам сразу
> использовать более очевидное и простое решение(в случае, когда итерации цикла не
> зависят напрямую от предыдущих результатов кода, помещённого в цикл)?
От того, что вашему гуманитарному мозгу так кажется, это "решение" не становится "более очевидным и простым":)
> Есть задачи,
> в которых предпочтительней использование while/for.
Всё эти "задачи" почему-то легко и непринуждённо решаются в языках, у которых вообще нет операторов цикла (и goto), т.е. абсолютно нет. Представляете?