Aufgabe 11.6: Collatz-Funktion

Disclaimer: Dieser Thread wurde aus dem alten Forum importiert. Daher werden eventuell nicht alle Formatierungen richtig angezeigt. Der ursprüngliche Thread beginnt im zweiten Post dieses Threads.

Aufgabe 11.6: Collatz-Funktion
Hi!
Ich habe die Aufgabe bis auf die d) implementiert, jetzt stehe ich in dieser Teilaufgabe etwas auf dem Schlauch. collatzList bekommt als Parameter eine Funktion und ein Int und soll eine Liste von Ints zurückgeben.
Diese Liste setzt sich ja wie folgt zusammen: (n, collatz(n), collatz(collatz(n)),…) solange bis hier 1 rauskommt.
Muss ich zum Erstellen dieser Liste einen Helper verwenden? Oder benutze ich Stream.iterate? Oder muss ich collatzList irgendwie rekursiv aufrufen?
Danke schon mal für Tipps :slight_smile:


Du brauchst keinen Helper. Schau dir mal die Folien 11-11f an. Rekursion ist das Stichwort :wink:


Hmm also wie ich das mit foldRight hinbekomme hab ich nicht rausgefunden, ich hab jetzt Stream.iterate verwendet. Trotzdem Danke für die Antwort :slight_smile:


Also ich weiß nicht, wo du da Stream.iterate verwenden musst. Du brauchst für das Problem auch nicht foldRight oder foldLeft zu verwenden.

Das ganze lässt sich sehr einfach mit Rekursion lösen (also ein rekursiver Aufruf und eine entsprechende Abbruchbedingung) und ich empfehle dir, es evtl. mal rekursiv zu probieren. In der Klausur kann es nämlich durchaus passieren, dass gefordert wird, bestimmte Funktionen rekursiv zu implementieren und da ist es schon hilfreich, wenn man verschiedene Techniken parat hat.

1 Like