Не понимаю код ребят помогите

class Power { 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 v stepeni " + i + " ravno " + result); } } }

Не понимаю зачем нужен декреминтровать е можете кто нибудь нормально объяснить Спасибо большое ( знаки не ставил потому что на скорую руку пишу сорян )

11
38 комментариев

( знаки не ставил потому что на скорую руку пишу сорян )

В этом уточнении больше символов, чем потребовалось бы для расстановки всех знаков препинания. Отмазка не прокатила. Сорян. 

10

Если не декрементировать е, то цикл будет бесконечным, т.к. е всегда будет больше 0

5

но ведь когда i станет = 3  то е тоже будет 3 и декрементруя его будет 2 и цикл становится бесконечным или я тупанул ?

Код просто выводит результат возведения 2 в различные степени (от 0 до 9). Внутри цикла For происходит возведение поочередно в разные степени - при i=0 возведение в 0 степерь, при i=9 - в 9 степень. Внутри вложенного цикла while просходит сама операция возведения в степень. Для того чтобы возвести 2 в степень X нужно умножить число 2 само на себя X раз (например 2^3 = 2*2*2). Поэтому и нужен счетчик "e". Внутри цикла while отсчет идет от i до 0 - для этого и нужен декремент "e". Чтобы умножить двойку саму на себя i раз.

1

Спасибо 

Если какая-то строчка непонятна, убирай её из кода и смотри результат, в данном случае, если убрать декремент из цикла while, то программа попадёт в бесконечную петлю, из которой нет выхода, и зависнет.

1

да я понял это увидел потом еще раз прочитал как работает цикл while и еще прочитал комменты и доперло 
Спасибо