The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]



Индекс форумов
Составление сообщения

Исходное сообщение
"Samsung планирует в августе выпустить первый смартфон на баз..."
Отправлено lucentcode, 21-Мрт-13 21:23 
Настоящая хвостовая рекурсия(такая, как в функциональном программировании) в C/C++ не возможна. Все вызовы вашей функции будут ложиться в стек. Вроде-бы из всех компиляторов один GCC научили оптимизировать выполнение рекурсивной функции. В результате которого подменяются только значения параметров рекурсивной функции, а множественного вызова не происходит. По сути дела компилятор разворачивает вашу хвостовую рекурсию в банальный цикл. Так почему бы вам не делать это ручками, как вышеупомянутые корейцы? Но это не более, чему надувательство со стороны GCC. Нет никакой гарантии, что ваш код будут собирать именно гнутым компилятором. А значит код, быстро работающий у вас, может тормозить(а то и вызывать переполнение стека(кто-ж знает, сколько раз будет сделан вызов вашей функции, так можно и переполнение стека организовать)) у других. Согласитесь, будет некрасиво, если ваша программа начнёт вылетать из-за такой мелочи. Кстати оптимизацию хвостовой рекурсии у GCC можно включать/отключать указывая нужный флаг оптимизации. Кто-то запретит его случайно, собирая в пакетик ваш проект, и всё - вам начнут поступать гневные упреки в багзиллу:)


Да, я не программист вообще. Тем более не программист на C, с которым я никогда не имел дела. Да, я прочитал пару книжек по питону, полторы по PHP, и одну по C++. Иногда пишу небольшие программы для себя, автоматизирую рутинные операции. И тем не менее я знаю о том, что говорю. Может былая страсть к MASM/FASM и ковырянию чужого ПО в OllyDbg сказывается?

 

Ваше сообщение
Имя*:
EMail:
Для отправки ответов на email укажите знак ! перед адресом, например, !user@host.ru (!! - не показывать email).
Более тонкая настройка отправки ответов производится в профиле зарегистрированного участника форума.
Заголовок*:
Сообщение*:
 
При общении не допускается: неуважительное отношение к собеседнику, хамство, унизительное обращение, ненормативная лексика, переход на личности, агрессивное поведение, обесценивание собеседника, провоцирование флейма голословными и заведомо ложными заявлениями. Не отвечайте на сообщения, явно нарушающие правила - удаляются не только сами нарушения, но и все ответы на них. Лог модерирования.



Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру