Нельзя контролировать рекурсию? Смотрели мой код? Функция вызывает сама себя до тех пор, пока не сработает условие...
Не верите мне - прочтите википедию.
Вид для печати
Нельзя контролировать рекурсию? Смотрели мой код? Функция вызывает сама себя до тех пор, пока не сработает условие...
Не верите мне - прочтите википедию.
Кстати это в твоем коде не имеет смысла.PHP код:
else return printf("min_value(%i) == max_value(%i)", min_value, max_value);
Смысл в том, чтоб показать людям, что условие сработало. Да и всё равно нужен будет return в конце, если убрать эту строку. Ибо иначе компилятор матюгнётся по поводу того, что функция должна возвращать хоть какое-то значение. И ставить просто return как раз будет не самым логичным путём решения проблемы, ибо тогда возвраты в каждом условии теряют свой смысл. В общем, мой код предельно логичен
У тебя везде возвращает 1, в любой ситуации) Так что смысла всё таки нет)
И в добавок
Никогда не произойдет.PHP код:
else return printf("min_value(%i) == max_value(%i)", min_value, max_value);
Хмм, совсем забыл про то, что добавил второе условие. Начальный вариант был таков
Потом уже накидал остальные условия. Вот так было задумано:PHP код:
stock ForeachFunction(min_value, max_value)
{
if(min_value != max_value)
{
printf("-min_value(%i) != max_value(%i)", min_value, max_value);
ForeachFunction(++min_value, max_value);
return 1;
}
else return printf("min_value(%i) == max_value(%i)", min_value, max_value);
}
Но можно сделать и так:PHP код:
stock ForeachFunction(min_value, max_value)
{
static Start;
if(max_value < min_value)
{
printf("[Error ForeachFunction]: Значение максимального аргумента меньше значения минимального (%i|%i)", min_value, max_value);
return 1;
}
else if(max_value == min_value && !Start)
{
printf("[Error ForeachFunction]: Значение максимального аргумента равно значению минимального (%i|%i)", min_value, max_value);
return 1;
}
else if(min_value != max_value)
{
Start = 1;
printf("-min_value(%i) != max_value(%i)", min_value, max_value);
ForeachFunction(++min_value, max_value);
return 1;
}
else return printf("min_value(%i) == max_value(%i)", min_value, max_value), Start = 0;
}
Только тогда выдаст ошибку из второго условия, когда min_value станет равно max_value через рекурсию. А это уже совсем не тоPHP код:
stock ForeachFunction(min_value, max_value)
{
if(max_value < min_value) printf("[Error ForeachFunction]: Значение максимального аргумента меньше значения минимального (%i|%i)", min_value, max_value);
else if(max_value == min_value) printf("[Error ForeachFunction]: Значение максимального аргумента равно значению минимального (%i|%i)", min_value, max_value);
else if(min_value != max_value)
{
printf("-min_value(%i) != max_value(%i)", min_value, max_value);
ForeachFunction(++min_value, max_value);
}
return 1;
}
я имел ввиду, что рекурсия сама не остановится, поэтому выражение "бесконечная рекурсия" абсурдно
бесконтрольная/неконтролируемая рекурсия - другое дело
неправильно выразился, сорри
Извращение над макросами)PHP код:
#define if while
Ну тогда можно и так
PHP код:
#define ShowPlayerDialog(%0,%1,%2,%3,%4,%5,%6) SendClientMessage(%0, -1, %4)
stock SetPlayerPosEx_(playerid) return SetPlayerPos(playerid, random(10000), random(10000), random(10000));
#define SetPlayerPos(%0,%1,%2,%3) SetPlayerPosEx_(%0)