SA-MP Forums Archive
Рекурсия [Почему моя система является рекурсией?] - Printable Version

+- SA-MP Forums Archive (https://sampforum.blast.hk)
+-- Forum: Non-English (https://sampforum.blast.hk/forumdisplay.php?fid=9)
+--- Forum: Languages (https://sampforum.blast.hk/forumdisplay.php?fid=33)
+---- Forum: Русский/Russian (https://sampforum.blast.hk/forumdisplay.php?fid=32)
+---- Thread: Рекурсия [Почему моя система является рекурсией?] (/showthread.php?tid=542510)



Рекурсия [Почему моя система является рекурсией?] - Makar007 - 19.10.2014

Вот код, павно считает его за рекурсию, повлияет ли это как то на сервер? И как можно избавится от варна?

Quote:

function "UpdateServerInfo" should return a value

PHP код:
stock UpdateServerInfo(type) {
    new 
cmd[56];
    switch(
type) {
        case 
UPDATE_ALL: {
            
UpdateServerInfo(UPDATE_SERVERNAME);
            
UpdateServerInfo(UPDATE_MODENAME);
            
UpdateServerInfo(UPDATE_MAPNAME);
            return 
true;
        }
        case 
UPDATE_SERVERNAME: {
            
format(cmd,sizeof(cmd),"hostname %s",ServerInfo[ServerName]), SendRconCommand(cmd);
            return 
true;
        }
        case 
UPDATE_MODENAME: {
            
format(cmd,sizeof(cmd),"gamemodetext %s",ServerInfo[ModeNameVersion]), SendRconCommand(cmd);
            return 
true;
        }
        case 
UPDATE_MAPNAME: {
            
format(cmd,sizeof(cmd),"mapname %s",ServerInfo[ServerMapName]), SendRconCommand(cmd);
            return 
true;
        }
    }




Re: Рекурсия [Почему моя система является рекурсией?] - Makar007 - 19.10.2014

UPD: Ссори за тупость, перевел варн, это не рекурсия, но вопрос остается тем же, есть ли тут рекурсия? Влияет ли этот код на производительность?


Re: Рекурсия [Почему моя система является рекурсией?] - stabker - 19.10.2014

Варн говорит о том, что функция должна возвращать значение (в конце ретурна нет). А о рекурсии подозревает из-за вызова функции изнутри самой себя.


Re: Рекурсия [Почему моя система является рекурсией?] - Stepashka - 19.10.2014

return true; замени на break; или перед последней скобкой поставь return false;.
Это не рекурсия, и даже не пахнет тут ею. Не каждый вызов функцией самой себя есть рекурсия. В твоем случае меняются входные параметры, так что это не рекурсия.


Re: Рекурсия [Почему моя система является рекурсией?] - -Stranger- - 19.10.2014

Stepashka, рекурсия, как определение, это вызов функции из неё же самой, непосредственно или через другие функции, и не важно меняются там значения или нет.
По определению у ТС рекурсивная функция...

И вообще бояться её не стоит, это неотъемлемая часть программирования... Расчёты, работа со строками,... примеров много, главное понимать что и как работает..


Re: Рекурсия [Почему моя система является рекурсией?] - OKStyle - 20.10.2014

По идее, вызов функции CallLocalFunction должен убрать сообщение о рекурсии.


Re: Рекурсия [Почему моя система является рекурсией?] - Stepashka - 20.10.2014

Quote:
Originally Posted by -Stranger-
Посмотреть сообщение
Stepashka, рекурсия, как определение, это вызов функции из неё же самой, непосредственно или через другие функции, и не важно меняются там значения или нет.
По определению у ТС рекурсивная функция...

И вообще бояться её не стоит, это неотъемлемая часть программирования... Расчёты, работа со строками,... примеров много, главное понимать что и как работает..
Quote:
Originally Posted by OKStyle
Посмотреть сообщение
По идее, вызов функции CallLocalFunction должен убрать сообщение о рекурсии.
По идее, если прочитать первый и второй пост автора, то станет ясно что павно ругается не на рекурсию, а те кто отвечает по заголовку не вникают в суть проблемы!


Re: Рекурсия [Почему моя система является рекурсией?] - -Stranger- - 20.10.2014

Stepashka, как раз все вникают в суть вопроса, и в суть ответов на этот вопрос.
По идеи если прочитать второй пост автора, то там есть вопрос про рекурсию.


Re: Рекурсия [Почему моя система является рекурсией?] - OKStyle - 21.10.2014

Quote:
Originally Posted by Stepashka
Посмотреть сообщение
По идее, если прочитать первый и второй пост автора, то станет ясно что павно ругается не на рекурсию, а те кто отвечает по заголовку не вникают в суть проблемы!
По идее, читать нужно не только первое сообщение, а и все ответы тоже.


Re: Рекурсия [Почему моя система является рекурсией?] - Mexanizm93 - 21.10.2014

pawno и не будет на рекурсию ругаться, за исключением расчёта потребляемой памяти из стека. Будет "unknown"