/* Hanois t?rn
*
* N antall disker skal flyttes fra kolonne (A) til kolonne (C) ved hjelp
* av en hjelpekolonne (B). En disk kan ikke legges opp? en disk som er mindre
* enn seg selv og kun 1 disk kan flyttes av gangen.
*
* Noen problemer er lettere ? l?se med rekursjon enn uten.
*
* Dette programmet lager en steg-for-steg oppskrift p? l?sning av Hanoi's t?rn
* for N antall disker.
*
* L?sning: Problemet kan beskrives annerledes. For ? flytte N disker fra
* A til C, m? man f?rst flytte N-1 disker fra A til B, slik at den nederste
* kan bli flyttet til C. Deretter m? vi flytte N-1 disker fra B til C med A
* som hjelpekolonne.
*
* Vi ser at problemet har de to kriteriene vi er interessert i relatert til
* rekursjon. Det m? finnes et basistilfelle (n?r N = 1 disk), og vi m? kunne
* redusere problemet stegvis til vi n?r basistilfelle.
*
*
* Kj?res med int som parameter: "java Hanoi int"
*/
class Hanoi{
public static void main(String[] args){
int n = Integer.parseInt(args[0]);
hanoi(n, "A", "B", "C");
}
public static void move(String fra, String til){
System.out.println("Flytt disk fra " + fra + " til " + til);
}
public static void hanoi(int n, String a, String b, String c){
if (n == 1){
move(a,c);
return;
}
hanoi(n-1, a,c,b);
move(a,c);
hanoi(n-1,b,a,c);
}
}