Как в этой программе работает декремент e--?

Программа на консоли выдает такой результат:

2 в степени 0 равно 1
2 в степени 1 равно 2
2 в степени 2 равно 4
2 в степени 3 равно 8
2 в степени 4 равно 16 

e-- закрыто в блоке кода while - соответственно выйти за пределы своего блока вверх, туда где e = i она не может. Соответственно переменной e вверху каждый раз присваивается значение i, спущенное сверху. Но тогда получается что декремент e-- вообще не нужен и его можно убрать? Я его убираю и программа на вывод выводит только одну верхнюю строку... (2 в степени 0 равно 1), то есть цикл for вообще перестает работать Почему так происходит? Как тут срабатывает декремент e--? Зачем он тут нужен?

public class HelloWorld {
    public static void main(String[] args) {

        int e;
        int result;

        for(int i=0; i < 5; i++) {
            result = 1;
            e = i;
            while(e > 0) {
                result *=2; //КАК ТУТ РЕЗАЛТ ВЫРАСТАЕТ В ОТВЕТЕ ЗАДАЧИ ЕСЛИ ТУТ ВСЕГДА 1*2 = 2 И БЕЗ ВАРИАНТОВ
                e--;
            }
            System.out.println("2 в степени " + i + " равно " + result);
        }
    }
}

Ответы (2 шт):

Автор решения: Miron

Довольно странная программа. То, что она делает, можно успешно заменить следующим кодом:

for(int i = 0, result = 1; i < 5; i++, result = 1) {
    for(int e = 0; e < i; e++){
        result *= 2;
    }
    System.out.println("2 в степени " + i + " равно " + result);
}

По-сути и

for(int e = 0; e < i; e++){
    result *= 2;
}

e = i;
while(e > 0) {
    result *=2;
    e--;
}

e = 0;
while(e < i) {
    result *=2;
    e++;
}

одно и то же. e лишь играет роль счетчика - счетчика, который гарантирует выполнение операции result *= 2 ровно i раз.

→ Ссылка
Автор решения: Эникейщик

Там не 1*2, а 1*2*2*.. столько раз, чему равно i (т.е. е).

→ Ссылка