Solucionado (ver solução)
Solucionado
(ver solução)
3
respostas

Dúvida no Ex. 9 da Aula 2 - Variáveis e fluxo

Não entendi a lógica, podem me explicar resumidamente?

class TresNMaisUm {
            public static void main(String[] args) {
                int x = 13;
                System.out.println("Iniciando...\n" + x);
                while (x != 1) {
                    if (x % 2 == 0) {
                        x = x / 2;
                    } else {
                        x = 3 * x + 1;
                    }
                    System.out.println(x);
                }
            }
}
3 respostas
solução!

Fiz comentários!

int x = 13; //inicializa x com 13
System.out.println("Iniciando...\n" + x);
while (x != 1) { //enquanto x está diferente de 1
      if (x % 2 == 0) { se x é par
           x = x / 2; //então divide x por 2 
      } else { //se x é impar
           x = 3 * x + 1;  //então multiplique x por 3 e adicione 1
      }
      System.out.println(x);
}

Na primeira iteração x é 13 (que é diferente de 1 e impar) vai entrar então no bloco else com o resultado 40 (x = 3 * 13 + 1).

Na segunda iteração x é 40 (que é diferente de 1 e par) vai entrar o bloco do if com o resultado 20 (x = 40 / 2).

E assim pra frente. Ajudou?

abs

Obrigada Nico, agora ficou mais claro ;)

Obrigado!