public static List<Step> hanoi(int numberOfDiscs, Step step) { List<Step> result = new ArrayList<Step>(); if (numberOfDiscs == 1) { result.add(step); } else { Step helpStep = getHelpStep(step); result.addAll(hanoi(numberOfDiscs - 1, helpStep)); result.add(step); result.addAll(hanoi(numberOfDiscs - 1, new Step(helpStep.getToPeg(), step.getToPeg()))); } return result; }
public static int calculateHelpPeg(Step step) { return 6 - step.getFromPeg() - step.getToPeg(); }
private static void printStep(Step step) { System.out.println(String.format("from: %s to: %s", step.getFromPeg(), step.getToPeg())); }