class Hanoi { // Affiche les liste des étapes de résolution du problème des tours de // Hanoï, où il faut déplacer 'n' disques du piquet 'source' vers le // piquet 'destination', en utilisant éventuellement un troisième // piquet : 'intermediaire'. // // Retourne le nombre de mouvements effectués. static int hanoi(int n, char source, char destination, char intermediaire) { int nmouv; if (n == 1) { nmouv = 1; System.out.println("mouvement : " + source + " -> " + destination); } else { nmouv = 0; nmouv += hanoi(n - 1, source, intermediaire, destination); nmouv += hanoi(1, source, destination, intermediaire); nmouv += hanoi(n - 1, intermediaire, destination, source); } return nmouv; } public static void main(String[] args) { if (args.length == 0) { System.out.println("Usage: java Hanoi "); } else { int n = Integer.parseInt(args[0]); int nmouv; System.out.println("# Résolution des tours de Hanoï pour n = " + n + "..."); nmouv = hanoi(n, 'A', 'C', 'B'); System.out.println(); System.out.println("# ... résolution en " + nmouv + " mouvement" + (nmouv == 1 ? "" : "s")); } } }