Entdecken Sie, wie Sie Ihre rekursive `FizzBuzz`-Funktion verbessern können, um Ergebnisse in einer Liste zu speichern, anstatt sie nur auszugeben. Perfekt für Python-Enthusiasten, die ihr Verständnis vertiefen möchten!
---
Dieses Video basiert auf der Frage https://stackoverflow.com/q/62301220/ gestellt von dem Nutzer 'likeAvirgin' ( https://stackoverflow.com/u/13718912/ ) sowie auf der Antwort https://stackoverflow.com/a/62301688/ bereitgestellt von dem Nutzer 'jarmod' ( https://stackoverflow.com/u/271415/ ) auf der Website 'Stack Overflow'. Vielen Dank an diese großartigen Nutzer und die Stackexchange-Community für ihre Beiträge.
Besuchen Sie diese Links, um den Originalinhalt und weitere Details zu sehen, z. B. alternative Lösungen, aktuelle Entwicklungen zum Thema, Kommentare, Versionsverlauf usw. Der ursprüngliche Titel der Frage lautete beispielsweise: Recursive FizzBuzz function - storing values in a list
Außerdem steht der Inhalt (außer Musik) unter der Lizenz CC BY-SA https://meta.stackexchange.com/help/l...
Der ursprüngliche Fragenbeitrag steht unter der Lizenz 'CC BY-SA 4.0' ( https://creativecommons.org/licenses/... ), und der ursprüngliche Antwortbeitrag steht unter der Lizenz 'CC BY-SA 4.0' ( https://creativecommons.org/licenses/... ).
Falls Ihnen irgendetwas auffällt oder Unstimmigkeiten bestehen, schreiben Sie mir bitte an vlogize [AT] gmail [DOT] com.
---
Rekursive FizzBuzz-Funktion: Werte in einer Liste speichern
Das FizzBuzz-Problem ist eine klassische Programmieraufgabe, die Entwickler herausfordert, für Zahlen, die durch bestimmte Werte teilbar sind, spezifische Ausgaben zu erzeugen. Traditionell wird es mit einfachen Schleifen gelöst, doch dieser Beitrag widmet sich einer eleganteren Lösung mit Rekursion kombiniert mit Listenakkumulation.
Verständnis der FizzBuzz-Herausforderung
Die Grundregeln für das FizzBuzz-Spiel sind einfach:
Für Zahlen, die durch sowohl 3 als auch 5 teilbar sind, wird "FizzBuzz" ausgegeben.
Für Zahlen, die nur durch 3 teilbar sind, wird "Fizz" ausgegeben.
Für Zahlen, die nur durch 5 teilbar sind, wird "Buzz" ausgegeben.
Für alle anderen Zahlen wird die Zahl selbst ausgegeben.
Viele kennen die iterative Lösung mit Schleifen, doch die Herausforderung hier besteht darin, eine rekursive Funktion zu erstellen, die die Ausgaben in einer Liste sammelt, anstatt sie direkt zu drucken.
Der anfängliche rekursive Ansatz
Sehen wir uns eine grundlegende rekursive Implementierung der FizzBuzz-Funktion an:
[[Siehe Video, um diesen Text oder Codeausschnitt anzuzeigen]]
Einschränkungen des bestehenden Codes
Bei dieser Implementierung:
Gibt die Funktion erfolgreich die erwarteten Ausgaben für jede Zahl von 1 bis n aus.
Speichert jedoch die Ergebnisse nicht in einer Liste, was wir erreichen möchten.
Erstellung der rekursiven FizzBuzz-Funktion mit Listenakkumulation
Um die Ausgaben in einer Liste zu speichern, können wir unsere anfängliche Funktion modifizieren. So funktioniert es:
Neue Funktionsdefinition
Wir erstellen eine neue Funktion namens fizzbuzz_recursive_list, die diese Aufgabe erfüllt:
[[Siehe Video, um diesen Text oder Codeausschnitt anzuzeigen]]
Erklärung des Codes
Basisfall: Die Rekursion endet, wenn n 0 erreicht hat, und gibt dann eine leere Liste [] zurück.
Rekursiver Aufruf: Die Funktion ruft sich selbst mit n-1 auf und sammelt die Ergebnisse in einer Liste namens accum.
Bedingungsprüfungen: Nach dem rekursiven Aufruf überprüft die Funktion:
Wenn n durch 3 und 5 teilbar ist, wird 'FizzBuzz' angehängt.
Wenn n nur durch 3 teilbar ist, wird 'Fizz' angehängt.
Wenn n nur durch 5 teilbar ist, wird 'Buzz' angehängt.
Wenn keine der Bedingungen zutrifft, wird die Zahl n angehängt.
Beispielanwendung
Um die Funktion in Aktion zu sehen, rufen Sie einfach auf:
[[Siehe Video, um diesen Text oder Codeausschnitt anzuzeigen]]
Erwartete Ausgabe
Wenn Sie den obigen Befehl ausführen, erhalten Sie folgende Ausgabe:
[[Siehe Video, um diesen Text oder Codeausschnitt anzuzeigen]]
Diese Ausgabe zeigt perfekt, wie die Funktion die Zahlen in ihre jeweiligen FizzBuzz-Ausgaben umgewandelt und in einer Liste gespeichert hat.
Fazit
Durch die Anpassung eines Standard-Rekursionsansatzes zum FizzBuzz-Problem haben wir erfolgreich eine Funktion erstellt, die nicht nur die Aufgabe erfüllt, sondern auch unsere Programmierfähigkeiten durch die Nutzung von Datenstrukturen wie Listen erweitert.
Wenn Sie das nächste Mal vor ähnlichen Problemen stehen, ziehen Sie Rekursion und Akkumulationstechniken in Betracht. Viel Spaß beim Programmieren!
Информация по комментариям в разработке