Guest User

Untitled

a guest
Jan 21st, 2019
98
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 1.23 KB | None | 0 0
  1.   /** Der eigentliche (rekursive) Verschiebe-Algorithmus.
  2.     * @param kleinste die kleinste zu verschiebende Scheibe
  3.     * @param groesste die groesste zu verschiebende Scheibe
  4.     * @param start index der Stange, von der wir starten
  5.     * @param ziel index der Stange, auf die wir schieben
  6.     */    
  7.  
  8.  
  9.  
  10. private void rekursion(int kleinste,int groesste,int start,int ziel){
  11.     // Falls kleinste == groesste ist, sind wir am Ende der
  12.     // Rekursion (und koennen direkt verschieben)
  13.     if ( kleinste == groesste ) {
  14.       // Die eigentliche Verschiebung
  15.       boolean ok = stangen[ziel].fuegeEin(stangen[start].entferne());
  16.       assert ok;
  17.       // Gib den Zustand der Tuerme aus
  18.       System.out.println("Zug : " + (++zaehler));
  19.       System.out.println(this);
  20.       System.out.println();
  21.     }
  22.     // Andernfalls muessen wir etwas mehr tun    
  23.     else {
  24.       // Schiebe die kleineren Scheiben auf einen anderen Turm
  25.       rekursion(kleinste, groesste - 1, start, 3 - start - ziel);
  26.       // Dann verschiebe die groesste Scheibe
  27.       rekursion(groesste,groesste,start,ziel);
  28.       // Danach schiebe die ganzen kleineren ebenfalls aufs Ziel
  29.       rekursion(kleinste, groesste - 1, 3 - start - ziel, ziel);
  30.     }
  31.   }
Add Comment
Please, Sign In to add comment