Java实现分治算法的汉诺塔问题
package edu.zcc.divideandconquer;
public class HannoiTower {
public static int hannoiTower(int num,char A,char B ,char C){
if(num <= 0) return 0;
if(num ==1) {
System.out.println("第1个盘从"+A+"移动到"+C);
return 1;
}
int count=0;
if(num>=2){
count=count+hannoiTower(num-1,A,C,B);
System.out.println("第"+num+"个盘从"+A+"移动到"+C);
count++;
count=count+hannoiTower(num-1,B,A,C);
}
return count;
}
public static void main(String[] args) {
Scanner scan=new Scanner(System.in);
System.out.println("请输入塔的高度:");
int num=scan.nextInt();
System.out.println("一共需要"+HannoiTower.hannoiTower(num,'A','B','C')+"次移动。");
}
}