Erste Schritte Collatz Problem max int

MoCodesThings

Neues Mitglied
Guten Abend,

ich bin Java-Anfänger und bin bei einer Übung mit dem Collatz-Problem auf ein weiteres (eigenes) Problem gestoßen;

und zwar will ich die maximale int der Collatz-Reihe finden und ausgeben, jedoch weiß ich nicht, ob das mit dem von mir erstellten Code möglich ist / ob ich eine array dazu benötige.

Java:
import java.util.Scanner;




public class Main {
    public static void main(String[] args) {
        Scanner scannerx = new Scanner(System.in);
        System.out.println("x");
        int x = scannerx.nextInt();

        Scanner scannery = new Scanner(System.in);
        System.out.println("Glied der Collatz-Folge");
        int y = scannery.nextInt();


        int versuche;
            versuche=0;

        int z = 0;

        int max;
        while (x !=1) {

            if (x % 2 == 0) {
                 x = x/2;
                System.out.println(x);
                versuche++;
                if (versuche ==y){
                     z = x;

                }

            }
            else {
                x = x*3+1;
                System.out.println(x);
                versuche++;

            }


        }
        System.out.println("Länge: " + versuche );

        System.out.println("Glied " + y + " der Collatzfolge ist" + z);

    }
}

Lösungsvorschläge aller Art wären echt nett.

LG Moritz
 
Naja, du gehst mit einer Schleife (machst du ja schon) einfach alle Elemente der Folge/Reihe durch und musst dann für jedes neue Element prüfen, ob es größer ist als das größte, was du schon bisher gefunden hast. Du musst dir also in einer Variablen einfach nur das "größte bisher gefundene Element" merken und für jedes weitere Element einen Vergleich machen.

Aktuell verstehe ich leider nicht im geringsten, was dein Code machen soll (neben der Definition der eigentlichen Collatz-Folge).
Du hast irgendein if (versuche ==y){ Vergleich drin (warum?) und dann setzt du dort z = x (was soll z denn bedeuten/sein?).
 

Zurück
Oben