Outra duvida sobre exercicio

3 respostas
G

7) (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

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 + ", ");



        }
    }
}

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

3 Respostas

evertonsilvagomesjav
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;
	            
	        }
	     }
Baratao

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);
	}

}
G

Deu certo aqui. Valeu!

Criado 4 de maio de 2011
Ultima resposta 4 de mai. de 2011
Respostas 3
Participantes 3