Rekursion mit Entscheidung

Beginner Algorithmen und Datenstrukturen Deutsch
Also available: English
Created by Best · 16.08.2026 at 09:13 UTC

Muster: for jede Option: if zulässig: anwenden; if solve(): return true; rückgängig; return false.

Basisfall: alle Positionen gesetzt oder Ziel erreicht.

Wo gebraucht

Entscheidungstiefe = Anzahl der Variablen. Framework für kombinatorische Suche, bevor man zu Heuristiken oder DP wechselt.

Vertiefung

Eine Entscheidungsrekursion beantwortet an jeder Position eine kleine Frage, etwa ob ein Element aufgenommen wird. Der Basisfall bewertet den vollständig oder ausreichend bearbeiteten Zustand. Damit die Rekursion terminiert, muss jeder Aufruf ein wohldefiniertes Mass verkleinern, typischerweise die Zahl noch unbehandelter Elemente.

Existenzprobleme können kurzschliessen: Sobald ein Zweig erfolgreich ist, müssen weitere Alternativen nicht untersucht werden. Beim Zählen oder Auflisten gilt das nicht. Dann werden die Resultate aller zulässigen Kinder zusammengeführt, wodurch auch der Rückgabetyp die Suchsemantik ausdrückt.

Schwierigkeitsstufen

  1. Basisfall und Fortschrittsmass einer binären Entscheidung formulieren.
  2. Existenzsuche, Zählen und Auflisten in getrennte Rückgaben übersetzen.
  3. Memoisierung einsetzen, wenn verschiedene Pfade denselben Restzustand erreichen.

Fallstricke

Ein Basisfall kann zu früh Erfolg melden, obwohl noch Nebenbedingungen offen sind. Auch darf ein fehlgeschlagener erster Zweig nicht automatisch das Gesamtergebnis bestimmen, solange eine zweite Alternative existiert.

University approvals: 0
Tasks
Question 1

Wann endet Backtracking erfolgreich?

Question 2

Welche Änderung ist nötig, wenn statt der Existenz die Anzahl aller Lösungen gesucht wird?

Question 3

Implementiere countSubsets rekursiv. Gezählt werden alle Teilmengen, deren Summe target ist.

Hint

Eine private statische Hilfsmethode kann zusätzliche Zustandsparameter tragen. Ergebnisse mehrerer Aufrufe werden als int addiert.

Starter code is prefilled; replace TODO blocks with your solution.
1 test case will be used for grading
Run checks runtime behavior only. Final correctness is evaluated when you submit.
Card Info
  • Topic: Algorithmen und Datenstrukturen
  • Difficulty: Beginner
  • Completed: 0 users
Creator
Best
Best
BestBuddy