Main.java
package com.company; import java.util.Scanner; import java.text.NumberFormat; public class Main { public static void main(String[] args) { char TOWER_A = 'A'; char TOWER_B = 'B'; char TOWER_C = 'C'; Scanner sc = new Scanner(System.in); System.out.println("请输入圆盘的个数:"); int disk = sc.nextInt(); Hanoi hanoi=new Hanoi(); hanoi.hanoi(disk,TOWER_A,TOWER_B,TOWER_C); } }
Hanoi.java
package com.company; public class Hanoi { public int m=0; Move mo=new Move(); //TODO:此时做实现。 public void hanoi(int disk,char TOWER_A,char TOWER_B,char TOWER_C ) { if (disk==1) { mo.get(++m,1,TOWER_A,TOWER_C); } else { hanoi(disk-1,TOWER_A,TOWER_C,TOWER_B); mo.get(++m,disk,TOWER_A,TOWER_C); hanoi(disk-1,TOWER_B,TOWER_A,TOWER_C); } } }
Move.java
package com.company; /** * 挪动的一步 */ public class Move { private int m; private int disk; private char fromTower; private char toTower; public void get(int m,int disk, char fromTower, char toTower) { this.m = m; this.disk = disk; this.fromTower = fromTower; this.toTower = toTower; System.out.println("第"+m+"次移动: "+"将"+this.disk+"号盘子从"+this.fromTower+"移动到"+this.toTower); } }