Ich habe eine Aufgabe, die lautet:
Mit diesen Bildungsgesetzen soll eine Zahlenfolge konstruiert werden: (n ∈ N)
• Beginne mit einer natürlichen Zahl n > 0
• ist n gleich 1, beende das Programm
• Ist n gerade, berechne n/2
• Ist n ungerade, berechne 3 ∗ n + 1
• Wiederhole die Vorgehensweise mit der berechneten Zahl Beispiel: n = 13 ergibt die folgende Sequenz aus 10 Termen: 13, 40, 20, 10, 5, 16, 8, 4, 2, 1.
Beispiel: n = 13 ergibt die folgende Sequenz aus 10 Termen: 13, 40, 20, 10, 5, 16, 8, 4, 2, 1. Implementieren Sie den Algorithmus iterativ in Java. Das Programm soll am Ende sowohl die Zahlen der Folge ausgeben, als auch die Anzahl der Elemente. Der Nutzer soll die Zahl n am Anfang des Programmes eingeben können. Dazu ein Beispiel für die Ausgabe in der Konsole:
Ich habe das Programm schon geschrieben, aber es funktioniert nicht genau wie diese Aufgabe.
Kann jemand mir helfen?
Mit diesen Bildungsgesetzen soll eine Zahlenfolge konstruiert werden: (n ∈ N)
• Beginne mit einer natürlichen Zahl n > 0
• ist n gleich 1, beende das Programm
• Ist n gerade, berechne n/2
• Ist n ungerade, berechne 3 ∗ n + 1
• Wiederhole die Vorgehensweise mit der berechneten Zahl Beispiel: n = 13 ergibt die folgende Sequenz aus 10 Termen: 13, 40, 20, 10, 5, 16, 8, 4, 2, 1.
Beispiel: n = 13 ergibt die folgende Sequenz aus 10 Termen: 13, 40, 20, 10, 5, 16, 8, 4, 2, 1. Implementieren Sie den Algorithmus iterativ in Java. Das Programm soll am Ende sowohl die Zahlen der Folge ausgeben, als auch die Anzahl der Elemente. Der Nutzer soll die Zahl n am Anfang des Programmes eingeben können. Dazu ein Beispiel für die Ausgabe in der Konsole:
Code:
Geben Sie eine Zahl n ein: 13
Element der Reihe: 13, 40, 20, 10, 5, 16, 8, 4, 2, 1
Anzahl der Elemente: 10
Ich habe das Programm schon geschrieben, aber es funktioniert nicht genau wie diese Aufgabe.
Kann jemand mir helfen?
Code:
import java.util.Scanner;
public class Zahlenfolgen {
public static void main(String[] args) {
// TODO Auto-generated method stub
int n;
Scanner sc = new Scanner(System.in);
System.out.println("Geben Sie eine Zahl n ein: ");
n = sc.nextInt();
if (n == 1)
{
System.out.println("Das Programm wird beenden");
}
sc.close();
do {
if (n % 2 == 0)
{
n /= 2;
System.out.println("Element der Reihe: " + n);
}
}
while (n > 0);
}
}