用java写了一个汉诺塔

package com.brzhang;

/**
 * 汉诺塔
 * 开始盘子全部都放在第一根柱子上
 * 目的:将第一根柱子上的盘子全部移动到第三根柱子上,规则是不能编号较大的盘子放在编号交小的盘子上面。
 *
 */
public class HanoTa {

    private long steps = 1l;
    /**
     *
     * @param n 盘子个数
     * @param from 第一根柱子
     * @param assist 第二根柱子
     * @param to 第三根柱子
     */
    public void hannota(int n,char from ,char assist,char to){
        if(n == 1){
            move(n,from,to);
        }
        else{
            //将上面的n-1个盘子从from柱子移动到assist柱子,借助to柱子
            hannota(n-1,from,to,assist);
            //将最低下的盘子从from柱子移动到to柱子
            move(n,from,to);
            //将其余的n-1个盘子从assite柱子移动到to柱子借助from柱子
            hannota(n-1,assist,from,to);
        }
    }

    /**
     * 移动盘子,从from移动到to借助assite
     *
     * @param from
     * @param to
     */
    public void move(int n,char from,char to){
        System.out.printf("steps " +(steps++) +"  move [pantzi "+n+ "] from "+from+" to "+to+"\n");
    }

    public static void main(String[] args) {
        new HanoTa().hannota(10,'A','B','C');
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值