Обычно мы говорим, что этот цикл выполняется n + 1 раз, поэтому n + 1 шагов для этого [...]
Нет, мы говорим, что он работает для n итераций. В этом и заключается смысл объединения начального индекса 0
с проверкой границы, записанной как < n
. Он выйдет из цикла, как только счетчик достигнет n
, после выполнения n
итераций (один для 0, один для 1, один для 2, ... один для n - 1, затем выйдет).
Работа, проделанная для увеличения счетчика, будь то i++
, i += 1
или i = compute_the_next_index(i)
, не считается "шагом". Шаги - это итерации, то есть выполнение тела цикла.