Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen der Seite angezeigt.
Beide Seiten, vorherige Überarbeitung Vorherige Überarbeitung Nächste Überarbeitung | Vorherige Überarbeitung | ||
faecher:informatik:oberstufe:algorithmen:rekursion:tuerme_hanoi:start [20.01.2022 10:25] – sbel | faecher:informatik:oberstufe:algorithmen:rekursion:tuerme_hanoi:start [11.12.2023 15:42] (aktuell) – [Analyse] Marco Kuemmel | ||
---|---|---|---|
Zeile 12: | Zeile 12: | ||
===== Analyse ===== | ===== Analyse ===== | ||
- | Bei genauerer Analyse des Problems, kann man erkennen, dass es rekursiver Natur ist: Beim Umsetzen des Turms mit '' | + | Bei genauerer Analyse des Problems, kann man erkennen, dass es rekursiver Natur ist: Beim Umsetzen des Turms mit '' |
- | Dann kann man die größte Scheibe nach **B** setzen und muss anschließden | + | Dann kann man die größte Scheibe nach **B** setzen und muss anschließend |
- | zu können. Danach muss der Turm von n-1 Scheiben | + | |
- | wieder auf den Platz B umgesetzt | + | {{ : |
+ | |||
+ | |||
+ | ---- | ||
+ | {{: | ||
+ | === (A1) === | ||
+ | |||
+ | Vollziehe den rekursiven Charakter des Problems in der Simulation nach, indem du Türme mit 1,2,3,4 Scheiben umsetzt und dir dabei klar machst, dass du jeweils auf das Verfahren des vorigen Schritts mit n-1 Scheiben | ||
+ | |||
+ | ---- | ||
+ | {{: | ||
+ | === (A2) === | ||
+ | |||
+ | Modelliere das Problem in Java. Als ADT kannst du einen Stack verwenden, | ||
+ | |||
+ | <code java> | ||
+ | import java.util.Stack; | ||
+ | [...] | ||
+ | public class Hanoi { | ||
+ | int numDiscs; | ||
+ | Stack< | ||
+ | Stack< | ||
+ | Stack< | ||
+ | [...] | ||
+ | public Hanoi() { | ||
+ | // ersten Stapel füllen | ||
+ | } | ||
+ | |||
+ | // schiebe Turm von ... nach ... | ||
+ | public void move([...]) { | ||
+ | |||
+ | } | ||
+ | |||
+ | // alle drei Türme ausgeben | ||
+ | public void printState() { | ||
+ | |||
+ | } | ||
+ | </ | ||
+ | |||
+ | * Implementiere den Konstruktor, | ||
+ | * Implementiere zunächst die Methode '' | ||
+ | * Implementiere die Rekursive Funktion '' | ||
+ | |||
+ | === Hinweise und Hilfestellungen === | ||
+ | |||
+ | * [[https:// | ||
+ | * Die Türme | ||
+ | * Überlege dir beim Programmieren der Methode '' | ||
+ | * Die Methode '' | ||
+ | * Die Methode '' | ||
+ | * Beachte: Beim Ausgeben eines Stacks ('' | ||