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

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

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;
        }
    }

Reply
#2

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

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

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

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

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

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

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

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

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

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

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


Forum Jump:


Users browsing this thread: 1 Guest(s)