利用Java语言实现汉诺塔游戏

如题:利用Java语言实现汉诺塔游戏

分析:
1、只有一个盘子的情况,直接将第一个盘子从开始的地方移动到目标地方即可。
2、有两个盘子的情况,先将第一个盘子移到中间位置,然后将第二个盘子移动到目标地方,最后把在中间位置的第一个盘子移到目标位置。
3、有多余2个以上的盘子,均认为只有两种盘子,第一种为最后一个盘子,第二种为除了最后一个盘子外的所有盘子。反复按照1,2 的思路进行递归即可。

具体代码如下:

public class Hanoi {

    public static void main(String[] args) {
        hanoi(2,'A','B','C');
    }

    public static void hanoi(int i, char start, char middle, char target){
        /*
        i: 表示一共有几个盘子
        start: 表示开始的位置(柱子)
        middle: 表示中间的位置(过度柱子)
        target: 表示目标位置(最终要移到的位置柱子)
         */
        // 只有一个盘子
        if(i == 1){
            System.out.println("第1个盘子从" + start + "移动到" + target);
        }else{
            // 超过一个盘子,都认为是只有两种盘子,即最后一个盘子和除去最后一个盘子的前面所有盘子(整体),利用递归思想
            hanoi(i-1,start,target,middle);
            // 移动最后一个盘子到目标位置
            System.out.println("第" + i + "个盘子从" + start + "移动到" + target);
            // 把上面的整体移动到目标位置
            hanoi(i-1,middle,start,target);
        }
    }

人生若只如初见,何事秋风悲画扇。
等闲变却故人心,却道故人心易变。
-----------纳兰性德

小白寄语:学如逆水行舟,不进则退。

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值