Outra duvida sobre exercicio

  1. (opcional) Escreva um programa que, dada uma variável x (com valor 180, por exemplo), temos y de acordo
    com a seguinte regra:

- se x é par, y = x / 2
- se x é impar, y = 3 * x + 1
- imprime y
- O programa deve então jogar o valor de y em x e continuar até que y tenha o valor final de 1.

Por exemplo, para x = 13, a saída será:
40 -> 20 -> 10 -> 5 -> 16 -> 8 -> 4 -> 2 -> 1

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

    int x = 13;
    int y = 0;

    if (x % 2 == 0) {
        y = x / 2;
        System.out.print(y + ", ");

    } else {
        y = 3 * x + 1;
        System.out.print(y + ", ");



    }
}

}[/code]

Consegui fazer isso. Agora só falta jogar o valor de y em x e continuar até que y tenha o valor de 1.

[code] int x = 13;
int y = 0;

      while(y != 1){  
        
        if (x % 2 == 0) {   
            y = x / 2;   
            System.out.print(y + ", ");   
  
            x = y;
            
        } else {   
            y = 3 * x + 1;   
            
            System.out.print(y + ", ");   
  
            x = y;
            
        }
     }[/code]

Ou tb dessa forma:


public class Exercicio7 {
	
	 public static void main(String[] args) {  
		  
		 int x = 13;  
	     calcula(x); 
	 }

	public static void calcula(int x) {
		int y;
		
		if(x == 1)
			return;
		
		if (x % 2 == 0) {  
		    y = x / 2;  
		    System.out.print(y + ", ");  
  
		} else {  
		    y = 3 * x + 1;  
		    System.out.print(y + ", ");  
		}
		calcula(y);
	}

}

Deu certo aqui. Valeu!