Вероятно, проще всего думать об этом как о сумме двух отдельных рядов, один для случая, когда i%3 = 1
, а другой для, когда i%3=2
. В качестве альтернативы вы можете определить ее как сумму для всех значений i
минус сумма для i%3=0
. В качестве аргумента давайте рассмотрим первую половину последнего подхода: суммирование всех значений ширины.
В этом случае width
начнется с некоторого начального значения, и на каждой итерации его значение будет уменьшено на 1. На последней итерации его значение будет уменьшено на (end-start)
. Возможно, проще всего думать об этом как о треугольнике. Для простоты мы будем использовать маленькие числа - начнем с width = 5, start = 1 и end = 5. Возможно, проще всего нарисовать диаграмму:
Значения ширины:
*
**
***
****
*****
Что мы действительно ищем, так это площадь этого треугольника - довольно известная формула из элементарной геометрии - 1 / 2ab, где a и b - длины двух сторон (в данном случае , определяется начальным значением width
и end-start
). Это предполагает, что это действительно треугольник, то есть он уменьшается до 0. В действительности, есть хороший шанс, что мы имеем дело с усеченным треугольником, но формула для этого также хорошо известна (1 / 2a 1 b + 1 / 2a 2 b, где a - высоты правой и левой сторон, а b - ширина.