Java: появиться в начале руководства - PullRequest
0 голосов
/ 26 августа 2018

Код ниже:

public static void main(String[] args) {

    int e, result;
    for(int i=0; i<10;i++){
        result=1;
        e=i;
        while(e>0){
            result*=2;
            e--;            

        }
        System.out.println("2 to the "+i+" power is "+result);          
    }
}

У меня есть несколько вопросов с кодом выше:

  1. Не перезаписан ли результат в 1 в цикле for?Как реально рассчитывается мощность?
  2. Зачем вам нужен e-- в цикле while?

Ответы [ 3 ]

0 голосов
/ 26 августа 2018

Я проведу вас через итерации

public static void main(String[] args) {

    int e, result;
    for(int i=0; i<10;i++){
    result=1;
    e=i;
    while(e>0){
        result*=2;
        e--;            

    }
    System.out.println("2 to the "+i+" power is "+result);          
}
}

i = 0

e=0
result = 1;

i = 1

e=1
result=2*1

i = 2

e=2
result= 1*2*2

i = 3

e=3
result= 1 *2 *2 *2

i = 4

 e=4
 result = 1 *2 *2 *2 *2

...

0 голосов
/ 26 августа 2018
  1. Нет, это не так, потому что это делается после показа результата для итерации (System.ou.print ..).Установка результата в 1: only полезна для первого 'для итерации' (i = 0, а цикл пропускается).Мощность вычисляется с помощью цикла while.результат устанавливается в 1 для i = 0 этим кодом и хорошо вычисляется для других значений i.

  2. По причине окончания цикла while.Без этого цикл while будет бесконечным.С помощью инструкции e-- цикл while выполняется ровно i раз.

0 голосов
/ 26 августа 2018

Во-первых, цикл while находится внутри цикла for и выполняет умножение много раз.И два, потому что он используется для обратного отсчета до 0 с i.

for (int i = 0; i < 10; i++) {
    System.out.println("2 to the " + i + " power is " + (int) Math.pow(2, i));
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...