Информация об изменениях

Сообщение Re: Chained Control Flow Statements: break [, break]... [,co от 14.01.2025 13:56

Изменено 14.01.2025 13:57 VladD2

Re: Chained Control Flow Statements: break [, break]... [,continue]
Здравствуйте, Caracrist, Вы писали:

C>Концепция заключается в том, чтобы разрешить использование нескольких операторов `break` и опционального оператора `continue` в одной строке, как показано ниже:


Освой концевую рекурсию и проблем с циклами у тебя не будет в любом языке где поддерживается её оптимизация (или если количество переборов циклах не велико и не может переполнить стек).

if (cond1)
outerLoop();

// код выполнен после "break, break" или если !cond1
return;

void outerLoop()
{
if (innerLoop() && cond1)
outerLoop(); // концевая рекурсия внешнего цикла (возврат сюда из: break, continue)

bool innerLoop()
{
if (cond3)
return false; // выход из внутреннего и внешнего цикла
else if (cond4)
return true; // выход из внутреннего цикла и продолжение во внешнем цикле

if (innerLoop(cond2))
innerLoop(); // концевая рекурсия вложенного цикла
}
}

Re: Chained Control Flow Statements: break [, break]... [,co
Здравствуйте, Caracrist, Вы писали:

C>Концепция заключается в том, чтобы разрешить использование нескольких операторов `break` и опционального оператора `continue` в одной строке, как показано ниже:


Освой концевую рекурсию и проблем с циклами у тебя не будет в любом языке где поддерживается её оптимизация (или если количество переборов циклах не велико и не может переполнить стек).
if (cond1)
    outerLoop();

// код выполнен после "break, break" или если !cond1
return;

void outerLoop()
{
   if (innerLoop() && cond1)
       outerLoop(); // концевая рекурсия внешнего цикла (возврат сюда из: break, continue)
   
    bool innerLoop()
    {
        if (cond3)
            return false; // выход из внутреннего и внешнего цикла
        else if (cond4)
            return true; // выход из внутреннего цикла и продолжение во внешнем цикле
        
        if (innerLoop(cond2))
            innerLoop(); // концевая рекурсия вложенного цикла
    }
}