Java实现汉诺塔

Java实现汉诺塔,第1张

Java实现汉诺塔

1、图解如下

 

2、汉诺塔规则:

  • 编程实现将n个盘子从A移动到C,盘子编号从1到n
  • 每次只能移动一个盘子
  • 大盘子只能放在小盘子下面

3、思路

4、代码如下

public class Han {
    public static void main(String[] args) {
        hanoiTwoer(3,'A','B','C');
    }
    public static void hanoiTwoer(int nDisks,char A,char B,char C){
        if(nDisks==1){
            //一步到位
            move(nDisks,A,C);
            return;
        }
        //此时nDisks>1
        //核心步骤1:先将n-1个盘子从A挪到B,C作为辅助
        hanoiTwoer(nDisks-1,A,C,B);
        //核心步骤2:此时最大的盘子在A上,C为空,n-1个盘子都在B上
        move(nDisks,A,C);
        //核心步骤3:将n-1个盘子从B挪到C上,A作为辅助
        hanoiTwoer(nDisks-1,B,A,C);
    }
    //将编号为nDisks的盘子从souce->dist
    public static void move(int nDisks, char sourceTower, char distTower) {
        System.out.println("编号为"+nDisks+"的盘子从"+sourceTower+"->"+distTower);
    }
}

 5、结果如下

 

 

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5609150.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-15
下一篇 2022-12-15

发表评论

登录后才能评论

评论列表(0条)

保存