Мне как то раз сказали что рекурсивные функции работают быстрее любых циклов для любых целей. Правда ли это? Может я и не правильно понял что значит рекурсия, но по моему вот это подходит под описание:
Code
function CheckRange takes unit u, unit un returns real
if IsUnitInRange( un, u, 2000.0 ) then
if IsUnitInRange( un, u, 1500.0 ) then
if IsUnitInRange( un, u, 1000.0 ) then
return 1.0
endif
return 0.8
endif
return 0.6
else
return 0.4
endif
endfunction
Code
set y = CheckRange( un, u )
Это кофицент награды золота за крипов. Чем дальше убитый вражеский юнит от вашего юнита, тем меньше кофицент. Тут правда есть конкретные значения, 1000, 1500, 2000.
Теперь вот вам отрывок кода, который выполняет то же самое, только по другому:
Code
set dx = GetWidgetX(un) - GetWidgetX(u)
set dy = GetWidgetY(un) - GetWidgetY(u)
set d = SquareRoot( dx * dx + dy * dy )
if d < 1000 then
set y = 1.00
elseif d <= 1500 and d > 1000 then
set y = 0.80
elseif d <= 2000 and d > 1500 then
set y = 0.60
elseif d > 2000 then
set y = 0.40
endif
И вот мой вопрос - что работает быстрее? Что из них лучше для производительности?