Компьютеры
и программирование

Выражение, вычисляемое в цикле for: как его написать

С помощью циклов, в частности, цикла for, одно и то же выражение можно вычислить многократно. Этот урок как раз посвящён искусству написания этих выражений, вычисляемых в цикле for. Метод, применяемый здесь, называется методом математической индукции.

Описанию конструкции цикла for уделено немало внимания на многих сайтах, поэтому повторим лишь основное.

Цикл for имеет следующий формат:

for (<Начальное значение>; <Условие>; <Приращение>;) { <Выражения> }

Написание выражений, вычисляемых в цикле for, должно удовлетворять следующим требованиям:

  • однозначность;
  • универсальность: выражение должно годиться и тогда, когда мы меняем условие, то есть значение, до которого следует производить вычисления;
  • экономия ресурсов системы при вычислении.

Самый простой случай - в задаче требуется подсчитать сумму целых положительных чисел от 1 до 100. В этом случае вычисляемое выражение в сигма-обозначении (обозначаемое греческой буквой сигма - ∑) выглядит так:

.

Код для этого случая вычисления:

int sum = 0; for (int i = 1; i <= 100; i++) { sum = sum + i; }

Во всех случаях, чтобы написать цикл for, нужно определить начальное значение, условие (до какого значения переменной цикла следует производить вычисления), приращение и собственно вычисляемое выражение.

Пример 1. Используя сигма-обозначение, найти общее выражение для суммы и написать цикл for для её вычисления.

Решение. В данной сумме все числа чётные и каждое следующее число больше предыдущего на 2. Это означает, что 1) в общей формуле можно использовать умножение на 2; 2) шаг цикла for (приращение) равен 1; 3) условие (шаг, до которого следует производить вычисления) равно 5. Таким образом, получаем следующее выражение в сигма-обозначении:

.

Код с циклом for для данного примера:

int sum = 0; for (int i = 0; i <= 5; i++) { sum = sum + 2 * i; }

Пример 2. Используя сигма-обозначение, найти общее выражение для суммы и написать цикл for для её вычисления.

Решение. В данной сумме все числа нечётные и каждое следующее число больше предыдущего на 2. Если уменьшить все числа на 1, то получаем ряд чётных чисел, как в примере 1. Если разделить все полученные числа на 2, то получим ряд . Таким образом, получаем следующее выражение в сигма-обозначении:

Код с циклом for для данного примера:

int sum = 0; for (int i = 0; i <= 5; i++) { sum = sum + (2 * i + 1); }

Пример 3. Используя сигма-обозначение, найти общее выражение для суммы и написать цикл for для её вычисления.

Решение. По сути требуется правильно найти начальное значение и приращение цикла for. Применяем формулу общего элемента к первым числам и получаем . Таким образом, основа первого элемента в сумму равна 3 и каждый следующий элемент больше предыдущего на 1, то есть, приращение цикла for равно 1. Получаем следующее выражение в сигма-обозначении:

Код с циклом for для данного примера:

int sum = 0; for (int i = 3; i <= n; i++) { sum = sum + (2 * i * i - 1); }

Пример 4. Используя сигма-обозначение, найти общее выражение для суммы и написать цикл for для её вычисления.

Решение. Сразу замечаем, что в этой сумме чередуются знаки. Значит, в общем выражении должно присутствовать . Смотрим на два первых элемента: первый (21) можно разделить на 3 и на 7, но это ничего не даёт в случае второго (25). Однако если вычесть 1 из 21 и из 25, получим числа, которые делятся нацело на 4: 20 и 24. Проверяем это для двух следующих чисел: 28 и 32 также делятся на 4 и мы получаем такой ряд: . Следовательно, приращение цикла for равно 1. Таким образом, получаем следующее выражение в сигма-обозначении:

Код с циклом for для данного примера:

int sum = 0; for (int i = 5; i <= 120; i++) { sum = sum + (4 * i + 1) * pow(-1, i +1); }

Поделиться с друзьями