> Настоящая хвостовая рекурсия(такая, как в функциональном программировании) в C/C++ не
> возможна. Все вызовы вашей функции будут ложиться в стек. Вроде-бы из
> всех компиляторов один GCC научили оптимизировать выполнение рекурсивной функции. В результате
> которого подменяются только значения параметров рекурсивной функции, а множественного
> вызова не происходит. По сути дела компилятор разворачивает вашу хвостовую рекурсию
> в банальный цикл. Так почему бы вам не делать это ручками,
> как вышеупомянутые корейцы? Но это не более, чему надувательство со стороны
> GCC.Нет, это логичное поведение. и логичное программирование.
> Нет никакой гарантии, что ваш код будут собирать именно гнутым
> компилятором.
В иструкции по сборке будет написано каким компилятором собирать. А для не-читающих-REDME - компилятор, не поддерживающий -foptimize-sibling-calls, отсечётся на этапе configure.
> А значит код, быстро работающий у вас, может тормозить(а то
> и вызывать переполнение стека(кто-ж знает, сколько раз будет сделан вызов вашей
> функции, так можно и переполнение стека организовать)) у других. Согласитесь, будет
> некрасиво, если ваша программа начнёт вылетать из-за такой мелочи.
> Кстати оптимизацию
> хвостовой рекурсии у GCC можно включать/отключать указывая нужный флаг оптимизации.
Я рад, что ты хоть что-то прочитал:)
[сообщение отредактировано модератором]