Zum Inhalt springen
  • 0

Rekursive Programmierung. Wie am Besten Lernen/Üben?


Frage

Geschrieben (bearbeitet)

Servus,

ich mache gerade eine Umschulung zum FI/A. Das erste Lehrjahr ist vielleicht zur Hälfte rum. Vor 3 Wochen erst, haben wir so richtig angefangen, uns mit einer Programmiersprache zu beschäftigen (C-Sharp). Schon nach wenigen Stunden, wurden wir mit rekursiver Programmierung konfrontiert.

Seit dem, versuche ich ein Durchblick zu bekommen. Aber mir fällt das echt schwer...

Grundsätzlich verstehe ich den Plan. Eine Methode, die sich selbst aufruft. Eine Abbruchbedingung sollte dabei unbedingt formuliert sein. Jede Schleife sollte rekursiv lösbar sein (ob dies Sinn macht, ist natürlich eine andere Frage). Jedoch fällt es mir schwer, mich in das Konzept hinzudenken bzw. ein Problem rekursiv zu Lösen.

Ich habe angefangen - zu versuchen - meine bisherigen Schleifen, rekursiv zu lösen. Klappt nicht. Das Internet bietet natürlich reichhaltige Hilfe und in dem meisten fällen kann ich auch deren Lösung nachvollziehen. 

Aber das kann doch nicht der Plan sein? Man sollte doch in der Lage sein, etwas eigenes aufzustellen?

 

Wie kann ich mir dieses Thema am Besten erschließen/annähern?

Gibt es irgendwo Übungen? Angefangen mit kleinen/leichten Beispielen?

Bearbeitet von Gaukler

5 Antworten auf diese Frage

Empfohlene Beiträge

  • 0
Geschrieben (bearbeitet)

Die Fibonacci-Folge ist ein klassisches Beispiel für eine Rekursion, da die Formel selbst eine Rekursion ist.

f(n) = f(n-1) + f(n-2)

 

vor 16 Stunden schrieb Gaukler:

Jede Schleife sollte rekursiv lösbar sein (ob dies Sinn macht, ist natürlich eine andere Frage)

Nein. Jede Rekursion lässt sich als Schleife abbilden aber nicht jede Schleife als Rekursion. ;)

Jeder Methodenaufruf speichert seine Rücksprungadresse auf dem Stack, damit das Programm weiß, an welche Stelle des Codes zurückgegangen werden muss, wenn die aufgerufende Methode durchlaufen wurde. Je tiefer man dann in die Rekursion einsteigt, also je häufiger sich eine Methode selbst aufruft, desto mehr Rücksprungadressen befinden sich auf dem Stack. Der Stack ist aber nicht unendlich groß und wenn kein Platz mehr vorhanden ist, steigt das Programm aus und wirft eine Stackoverflow Exception. Also z.B. Endlosschleifen, wie man sie halt z.B. in grafischen Oberflächen einsetzt, wären mit einer Rekursion nicht möglich.

Weil jedes Mal Daten auf dem Stack gelegt werden, sind Rekursionen (zumindest in imperativen Sprachen) langsamer als Schleifen und sollten auch nur mit Bedacht eingesetzt werden. Eine Schleife ist aus performancetechnischen Gründen zu bevorzugen. Wenn die Performance und die Rekursionstiefe keine Rolle spielen und eine Rekursion die Lesbarkeit des Codes erhöht, dann kann man eine Rekursion nehmen. Ansonsten eine Schleife.

Bearbeitet von Whiz-zarD
  • 0
Geschrieben

Diese Seite hat ein paar nette Online Tutorials, um diese Themen zu lernen und zu visualisieren.

https://visualgo.net/de

Ich verwende für die Suche in der Suchmaschine meiner Wahl oft auch mal Bild- oder Videoergebnisse. Über die anschließend generierte Übersicht findet man oft leicht weitere Hinweise.

Natürlich macht es Sinn, eine Suche auch über weitere Parameter einzugrenzen (z.B. Programmiersprache).

  • 0
Geschrieben

@tkreutz2Danke für den Link. Die Seite schaut richtig interessant aus!

@Whiz-zarDDanke für die Erklärung und Richtigstellung.

Auf der einen Seite bin ich schon etwas beruhigt...
Ich hab mich natürlich selbst auch schon zum Thema Informiert. Da hat es sich mir so dargestellt, das Rekursion eben ein integraler Bestandteil eines "guten" Programmiers/Informatikers wäre.

Dennoch würde ich das Thema so verstehn, das ich eigne Lösungen entwickeln kann. Aber vielleicht muss das einfach nur wachsen...

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Diese Frage beantworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...