IniziaInizia gratis

Collatz

Un fatto curioso della matematica è che regole semplici possono avere grandi conseguenze. Per esempio, la congettura di Collatz chiede se due regole semplici possano ridurre qualsiasi intero a 1.
Di solito si enuncia così:

  • Per i numeri pari, dimezza dividendo per 2
  • Per i numeri dispari, moltiplica per 3 e poi aggiungi 1
    Mettiamola alla prova!

Nota: se riscontri timeout del codice, controlla con attenzione la logica dell'istruzione if-else (o leggi il Suggerimento).

Questo esercizio fa parte del corso

Java intermedio

Visualizza il corso

Istruzioni dell'esercizio

  • Inserisci la condizione di terminazione corretta.
  • Chiama un metodo per verificare se n è pari.
  • Gestisci correttamente il caso dispari: questo deve attivarsi solo se il n originale è dispari.

Esercizio pratico interattivo

Prova a risolvere questo esercizio completando il codice di esempio.

class Collatz {
  static boolean isEven(int n) {
    return n % 2 == 0;
  }
  
  public static void main(String[] args) {
    int n = 1634;
    int i = 0;
    System.out.print(n);
    // Enter the appropriate termination condition
    while (____) {
      // Call a method to check if n is even
      if (____(n)) {
        System.out.println(" is even");
        n /= 2;
      } // Handle the odd case correctly. All non-even integers are odd
      ____ {
        System.out.println(" is odd");
        n = n * 3 + 1;
      }
      System.out.print(n);
      i += 1;
    }
    System.out.println(" reached in " + i + " steps");
  }
}
Modifica ed esegui il codice