package com.dk.dac; public class Hanoitower { public static void main(String[] args) { hanoiTower(3,'A','B','C'); } //汉诺塔移动方法(使用分治算法) public static void hanoiTower(int num,char a,char b,char c){ //如果只有一个盘 if (num == 1){ System.out.println("第1个盘从" + a + "->" + c); }else{ //如果有n >= 2 情况,可以看做两个盘1.最下边的一个盘2.上面的盘 //1.先把最上面的盘A -> B,移动过程用到C hanoiTower(num - 1,a,c,b); //2.把最下边的盘A -> C System.out.println("第" + num + "个盘从" + a + "->" + c); //3.把B的所有盘移动到C,移动过程用到A hanoiTower(num - 1,b,a,c); } } } //输出 第1个盘从A->C 第2个盘从A->B 第1个盘从C->B 第3个盘从A->C 第1个盘从B->A 第2个盘从B->C 第1个盘从A->C