FatalBlade
offline
Опыт:
7,398Активность: |
Рекурсивные функции (Правда ли что самые быстрые?)
Мне как то раз сказали что рекурсивные функции работают быстрее любых циклов для любых целей. Правда ли это? Может я и не правильно понял что значит рекурсия, но по моему вот это подходит под описание:
Это кофицент награды золота за крипов. Чем дальше убитый вражеский юнит от вашего юнита, тем меньше кофицент. Тут правда есть конкретные значения, 1000, 1500, 2000.
Теперь вот вам отрывок кода, который выполняет то же самое, только по другому:
И вот мой вопрос - что работает быстрее? Что из них лучше для производительности? оформил код как надо alpha Отредактировано alpha, 02.02.2012 в 21:10. |
02.02.2012, 21:00 | #1
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Hellfim
Новичок
offline
Опыт:
79,700Активность: |
FatalBlade, это не рекурсия.
Рекурсия:
Hellfim добавил:
Я бы пользовался этим:
|
02.02.2012, 22:00 | #2
+2/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
ScorpioT1000
Работаем
offline
Опыт: отключен
|
Ложь. Мало того, что они работают во много раз медленнее ("много" зависит, насколько высокоуровневый язык), так ещё и жрут кучу памяти, а при большой глубине вызывают переполнение стека. ScorpioT1000 добавил: и да, +1 |
02.02.2012, 22:51 | #3
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
FatalBlade
offline
Опыт:
7,398Активность: |
А вообще, не в этом случае, а просто, когда нужно проверить расстояние между юнитами, что лучше юзать:
________________________________________________ call IsUnitInRange( un, u, 2000.0 ) ________________________________________________ или ________________________________________________ set dx = GetWidgetX(un) - GetWidgetX(u) set dy = GetWidgetY(un) - GetWidgetY(u) set d = SquareRoot( dx * dx + dy * dy ) if d < 2000 then endif ________________________________________________ Отредактировано FatalBlade, 02.02.2012 в 23:23. |
02.02.2012, 23:00 | #4
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
alpha
offline
Опыт:
7,387Активность: |
Проверь сам, есть специальное дополнение к варкрафту для измерения скорости срабатывания алгоритма. Мне код каждого твоего поста приводить в нормальный вид? |
02.02.2012, 23:31 | #5
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
ScorpioT1000
Работаем
offline
Опыт: отключен
|
FatalBlade, напиши отдельно функцию для этого и используй её везде. Т.е. второе, но вместо 2000 будет входной параметр, после "if" - "return true", а в конце - "return false".
И принято не "<", а "<=" писать, когда проверяется что-то в какой-то области. |
02.02.2012, 23:36 | #6
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|