Это зависит.
Если ваши элементы содержат дискретные значения, то, скорее всего, они попадут в одно и то же значение после нескольких запусков.
Если ваши элементы содержат значения с ограниченной точностью (например, с плавающей или двойной точностью), это займет больше времени, но ограниченное время.
Если ваши элементы содержат произвольные значения точности, ваш алгоритм может никогда не завершиться. (Если вы подсчитаете каждый кусок интеграла и добавите его к фигуре, которую вы имеете на листе бумаги, вам понадобится бесконечное время, бесконечно большой лист бумаги и бесконечное терпение с этой аналогией.)
Существует небольшая разница между вашим кодом и следующим:
var i = 1;
while (i != 0)
i = i / 2;
Это когда-нибудь закончится? Это действительно зависит от реализации.