Анализ вложенных циклов
Анализ вложенных циклов — это определение того, сколько раз выполнится тело каждого цикла и какой результат получится после их работы. Главное правило: для каждой итерации внешнего цикла внутренний цикл запускается заново и полностью выполняет свои повторения.
Перед анализом полезно вспомнить, как работает счётчик цикла: нужно определить его начальное значение, условие продолжения и изменение после каждой итерации. Важно также различать тело цикла — команды, которые повторяются, — и команды, выполняемые после завершения цикла.
Как считать итерации
Если внешний цикл выполняется \(m\) раз, а внутренний — \(n\) раз при каждом запуске внешнего, то общее число выполнений тела внутреннего цикла равно произведению \(m\cdot n\). Если число повторений внутреннего цикла зависит от номера итерации внешнего, произведения недостаточно: нужно сложить числа повторений для всех запусков.
Здесь \(m\) — число итераций внешнего цикла, а \(n_i\) — число итераций внутреннего цикла на \(i\)-й итерации внешнего. Чтобы найти результат, следует проследить изменения переменных в правильном порядке: сначала выполняется тело внутреннего цикла, затем изменяется счётчик внутреннего, после его завершения изменяется счётчик внешнего.
Пусть внешний цикл выполняется 3 раза, а внутренний — 4 раза при каждом запуске. Тогда тело внутреннего цикла выполнится \(3\cdot4=12\) раз. Если на каждой итерации переменная \(s\) увеличивается на 2 и вначале равна 0, после циклов \(s=12\cdot2=24\).
Внутренний цикл не выполняется один раз за итерацию внешнего. Он запускается заново каждый раз, когда внешний цикл переходит к следующей итерации. Также после завершения внутреннего цикла его счётчик обычно сохраняет конечное значение и не начинает отсчёт автоматически, если это не предусмотрено алгоритмом.
Внешний цикл выполняется 5 раз, внутренний — 2 раза при каждом запуске. Сколько раз выполнится тело внутреннего цикла?
Для более сложных случаев составляют таблицу: номер итерации внешнего цикла, число итераций внутреннего и изменение результата. Такой способ особенно полезен, когда границы внутреннего цикла зависят от переменной внешнего. Подробный подсчёт итераций вложенных циклов рассматривает именно такие ситуации.
Главное
- Внутренний цикл выполняется заново при каждой итерации внешнего.
- При постоянном числе повторений общее число итераций находят умножением.
- Если число повторений меняется, используют сумму \(N=\sum n_i\) и отслеживают значения переменных по порядку.