Как рассчитать границу l oop? - PullRequest
1 голос
/ 26 марта 2020

Мне нужно вычислить границу l oop без использования циклов, то есть с одним выражением.
Например: for (int i = 0; i <= 10; i += 3) Нижняя граница равна 0, верхняя граница равна 10 - 10% 3 = 9

Как рассчитать границы в таком случае?
for (int i = 17; i >= 7; i -= 6)

1 Ответ

0 голосов
/ 26 марта 2020

Для for (int i = a; i <= b; i += c) и при условии ab и 0 <<code>c, расстояние от a до b равно b-a, количество целых шагов размера c, которые соответствуют на этом расстоянии (b-a)/c (с использованием целочисленного деления, поэтому оно усекается), расстояние, пройденное таким количеством шагов, равно (b-a)/c*c, поэтому окончательное значение равно a + (b-a)/c*c. Это предполагает, что в арифметике c, конечно, нет переполнения, которое может быть, если b большое и a большое отрицательное значение.

Аналогично, для for (int i = a; i >= b; i -= c), последнее значение a + (a-b)/c*c.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...