Classe di test per il problema della torre di Hanoi
- riceve da shell il numero di dischi nella prima torre
- visualizza l’elenco delle mosse corrispondenti
public class TestaHanoi { public static void main(String[] args) { int num=Integer.parseInt(args[0]); Hanoi(num, 1, 2, 3); } public static void Hanoi(int n, int origine, int appoggio, int destinazione) { if(n == 1) System.out.println(origine + " --> " + destinazione); else { Hanoi(n-1, origine , destinazione, appoggio ); Hanoi(1 , origine , appoggio , destinazione); Hanoi(n-1, appoggio, origine , destinazione); } } }
I tempi di attesa al variare del numero di dischi sono difficilmente confrontabili.
Utilizziamo il metodo System.currentTimeMillis() prima e dopo della chiamata del metodo Hanoi() per avere informazioni precise
public class TestaHanoi { public static void main(String[] args) { int num=Integer.parseInt(args[0]); long prima=System.currentTimeMillis(); Hanoi(num, 1, 2, 3); long dopo =System.currentTimeMillis(); System.out.println("\n\n" + (dopo-prima)/1000.0 + " secondi..."); } public static void Hanoi(int n, int origine, int appoggio, int destinazione) { if(n == 1) System.out.println(origine + " --> " + destinazione); else { Hanoi(n-1, origine , destinazione, appoggio ); Hanoi(1 , origine , appoggio , destinazione); Hanoi(n-1, appoggio, origine , destinazione); } } }