Tive muita dificuldade para entender como o while funcionava.... então fiz comentários linha a linha para entender... desejo compartilhar o code acho que pode ajudar os demais amigos!
public class ConjecturaDeCollatz {
public static void main(String[] args) {
int entrada = 13;
System.out.println("Iniciando...\n");
while (entrada != 1) {
// 13 true
// 40 true
// 20 true
// 10 true
// 5 true
// 16 true
// 8 true
// 4 true
// 2 true
// 1 false (não entra no while)
System.out.print(entrada + " > ");
// print 13 >
// print 40 >
// print 20 >
// print 10 >
// print 5 >
// print 16 >
// print 8 >
// print 4 >
// print 2 >
if (entrada % 2 == 0) {
entrada = entrada / 2;
// false
// 20 = 40 / 2
// 10 = 20 / 2
// 5 = 10 / 2
// false
// 8 = 16 / 2
// 4 = 8 / 2
// 2 = 4 / 2
// 1 = 2 / 2
} else {
entrada = ((3 * entrada) + 1);
// 40 = (3 * 13) + 1
// false
// false
// false
// 16 = (3 * 5) + 1
// false
// false
// false
// false
}
}
System.out.print(entrada);
// sendo falso... exibe o valor de entrada aqui
// print 1
}
}