代码示例:
package com.common.utils;
/**
* @ClassName Hanoitower
* @Description: 分治算法,用java解决汉诺塔问题
* @Author: mischen
* @date: 19:57 2022/12/1
* @Version 1.0
*/
public class Hanoitower {
public static void main(String[] args) {
char [] arr={'A','B','C'};
hanoitower(4,'A','B','C');
}
public static void hanoitower(int num,char a,char b,char c){
if (num==1){
//盘数为1,做一次搬迁,从A移动到C柱
System.out.println("第1个盘从"+a+"移动到"+c+"盘");
} else {
//盘数大于1
//先从a盘最上面的盘值最下面的盘之间的所有盘,移动到b盘,C盘作为中间盘
hanoitower(num-1,a,c,b);
//把最底下的那个盘,从a盘移动到c盘
System.out.println("第"+num+"个盘从"+a+"移动到"+c+"盘");
//把b盘的所有盘,移动到c盘上
hanoitower(num-1,b,a,c);
}
}
}