В первый раз внутренний цикл будет запущен один раз, потому что i
равен 1
, добавляя 1
к result
. Во второй раз он будет запущен дважды, потому что i
равен 2
, добавляя 2
к result
В третий раз внутренний цикл будет выполняться трижды, потому что i
равен 3
, добавляя 3
к result
. И так до тех пор, пока 100
.
В конечном итоге это добавляет 1 + 2 + 3 + 4 + … + 97 + 98 + 99 + 100
к result
. Это значение 5050
: номер треугольника 100 th .
Если ваш компилятор умный (например, gcc -O2
), он поймет тот факт, что самый внутренний цикл - просто инкремент, и скомпилирует:
for (int i = 1; i <= 100; i++)
{
for (int j = 1; j <= i; j++)
{
result++;
}
}
до:
for (int i = 1; i <= 100; i++)
{
result += j;
}
Если ваш компилятор действительно умный (например, clang -O2
), он скомпилирует его в простой result = 5050;
, но такая оптимизация может в конечном итоге привести к на самом деле медленная компиляция (он должен запускать код заранее, чтобы вычислить, каким должно быть значение, если только это не особые примеры, которые заставляют компилятор занимать больше места).