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

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

Изменено 14.01.2025 15:07 VladD2

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(); // концевая рекурсия вложенного цикла

        // этот код выполняется только если !cond2
        return true;
    }
}
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 (cond2)
            return innerLoop(cond2); // концевая рекурсия вложенного цикла

        // этот код выполняется только если !cond2
        return true;
    }
}