Einfach 0 gelöst 0% Erfolgsquote

Collatz-Folge

Folge der Halbiere-oder-Verdreifache-und-Addiere-eins-Regel, bis 1 erreicht wird.

Beginne mit n. Ist n gerade, teile es durch 2; ist n ungerade, multipliziere es mit 3 und addiere 1. Wiederhole dies, bis der Wert 1 erreicht ist. Sowohl der Startwert als auch die abschließende 1 sollen in der Antwort enthalten sein.

Implementiere collatz_sequence(n).

Eingabe

n: Die positive Startzahl.

Ausgabe

Gib die vollständige Folge in der richtigen Reihenfolge zurück.

Einschränkungen

1 ≤ n ≤ 10.000. Für alle Eingaben in diesem Bereich wird unter dieser Regel 1 erreicht; alle Werte der Folge passen in einen vorzeichenbehafteten 64-Bit-Integer.

Beispiele

Beispiel 1
Eingabe:
n = 6

Erwartete Ausgabe:
expected = [6, 3, 10, 5, 16, 8, 4, 2, 1]
Eingabe:
long long n = 6;

Erwartete Ausgabe:
std::vector<long long> expected = {6, 3, 10, 5, 16, 8, 4, 2, 1};
Eingabe:
long n = 6;

Erwartete Ausgabe:
long[] expected = new long[] {6, 3, 10, 5, 16, 8, 4, 2, 1};

Erläuterung

6 ist gerade, daher wird daraus 3. Dann wird aus 3 die 10. Wende die Regel weiter an, bis 1 erreicht ist.

Beispiel 2
Eingabe:
n = 1

Erwartete Ausgabe:
expected = [1]
Eingabe:
long long n = 1;

Erwartete Ausgabe:
std::vector<long long> expected = {1};
Eingabe:
long n = 1;

Erwartete Ausgabe:
long[] expected = new long[] {1};

Erläuterung

Der Startwert ist bereits 1, daher sind keine Umwandlungen nötig.

Referenzen

Diese Aufgabe wurde für CodeUtility angepasst. Beachte die oben genannten Vorgaben und Einschränkungen.

Von anderen lernen

Community-Lösungen

Noch keine veröffentlichten Lösungen. Löse die Aufgabe und teile als Erster eine Lösung.