/* 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. * * Kan muligens la studentene få skjellettet uten innmaten i hanoi-funksjonen. * * 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); } }