Как в этой программе работает декремент 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 шт):
Довольно странная программа. То, что она делает, можно успешно заменить следующим кодом:
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 раз.