Как в данной программе каждый раз высчитывается новое значение result?

Только учусь java и разбираю цикл while. Наткнулся на непонятный мне момент в задаче. Как я понял переменная result в первый круг цикла не рассчитывается и в консоль выводится ее изначальное значение - 1. На втором круге цикла переменная result рассчитывается как 1*2=2 и выводится в консоль на 2-ой строке. Но как она меняется дальше??? Ей инициализировано значение 1, которое как я понял циклом никак не меняется, соответственно на последующих кругах цикла переменная result всегда рассчитывается как 1*2=2, но на консоль в последующих строках выходят значения переменной result равные 4, 8 и 16. Как это происходит? Что я упускаю и не так понимаю? Где-то переменная result все же циклится как бы?

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

    int e;
    int result;

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

}

  • 2 в степени 0 равно 1 // На консоль вот так выводится
  • 2 в степени 1 равно 2
  • 2 в степени 2 равно 4
  • 2 в степени 3 равно 8
  • 2 в степени 4 равно 16

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

Автор решения: Ольга Мотылева
while(e > 0) {
            result *=2;                     
            e--;
        }

В этом цикле каждую итерацию происходит умножение на 2 переменной result и уменьшение переменной e на 1. То есть, result умножается на 2 количество раз, равное e.

→ Ссылка