汉诺塔代码

Main.java

package com.company;
import java.util.Scanner;
import java.text.NumberFormat;

public class Main {

    public static void main(String[] args) {

        char TOWER_A = 'A';
        char TOWER_B = 'B';
        char TOWER_C = 'C';

        Scanner sc = new Scanner(System.in);
        System.out.println("请输入圆盘的个数:");
        int disk = sc.nextInt();

        Hanoi hanoi=new Hanoi();
        hanoi.hanoi(disk,TOWER_A,TOWER_B,TOWER_C);

    }
}

Hanoi.java

package com.company;

public class Hanoi {
    public int m=0;
    Move mo=new Move();
    //TODO:此时做实现。
    public void hanoi(int disk,char TOWER_A,char TOWER_B,char TOWER_C )
    {
     if (disk==1)
     {
        mo.get(++m,1,TOWER_A,TOWER_C);
     }
     else
     {
      hanoi(disk-1,TOWER_A,TOWER_C,TOWER_B);
      mo.get(++m,disk,TOWER_A,TOWER_C);
      hanoi(disk-1,TOWER_B,TOWER_A,TOWER_C);
     }
    }
}

Move.java

package com.company;

/**
 * 挪动的一步
 */
public class Move {
    private  int  m;
    private  int  disk;
    private  char fromTower;
    private  char toTower;

    public void get(int m,int disk, char fromTower, char toTower) {
        this.m = m;
        this.disk = disk;
        this.fromTower = fromTower;
        this.toTower = toTower;
        System.out.println("第"+m+"次移动: "+"将"+this.disk+"号盘子从"+this.fromTower+"移动到"+this.toTower);
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值