Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /** Der eigentliche (rekursive) Verschiebe-Algorithmus.
- * @param kleinste die kleinste zu verschiebende Scheibe
- * @param groesste die groesste zu verschiebende Scheibe
- * @param start index der Stange, von der wir starten
- * @param ziel index der Stange, auf die wir schieben
- */
- private void rekursion(int kleinste,int groesste,int start,int ziel){
- // Falls kleinste == groesste ist, sind wir am Ende der
- // Rekursion (und koennen direkt verschieben)
- if ( kleinste == groesste ) {
- // Die eigentliche Verschiebung
- boolean ok = stangen[ziel].fuegeEin(stangen[start].entferne());
- assert ok;
- // Gib den Zustand der Tuerme aus
- System.out.println("Zug : " + (++zaehler));
- System.out.println(this);
- System.out.println();
- }
- // Andernfalls muessen wir etwas mehr tun
- else {
- // Schiebe die kleineren Scheiben auf einen anderen Turm
- rekursion(kleinste, groesste - 1, start, 3 - start - ziel);
- // Dann verschiebe die groesste Scheibe
- rekursion(groesste,groesste,start,ziel);
- // Danach schiebe die ganzen kleineren ebenfalls aufs Ziel
- rekursion(kleinste, groesste - 1, 3 - start - ziel, ziel);
- }
- }
Add Comment
Please, Sign In to add comment