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()));
 }