Оптимизация хвостовой рекурсии в коде C ++ - PullRequest
0 голосов
/ 05 октября 2011

Я хотел увидеть влияние оптимизации хвостовой рекурсии и хочу написать простую факториальную функцию оптимизированным для хвостовой рекурсии.Возможно ли сделать это в коде без поддержки компилятором?

Ответы [ 2 ]

3 голосов
/ 05 октября 2011

Компилятор выполняет оптимизацию.Поэтому невозможно протестировать его без поддержки компилятора.

Единственный способ сделать это в коде - заменить рекурсию итерацией (но тогда, конечно, вы потеряете рекурсию).

2 голосов
/ 05 октября 2011

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

...