Java汉诺塔算法

本文介绍了Java实现汉诺塔算法的基本思路和步骤,包括3根柱子、多个碟子的移动规则,以及如何通过递归方法解决这个问题。详细讲解了如何通过第一步定义方法,然后在第二步中进行条件判断和递归调用来移动碟子,最终实现所有碟子从A柱移动到C柱的目标。并提供了完成的代码展示。

汉诺塔算法基本思路:

1、有3根柱子(A、B、C)
2、若干碟子(变量)
3、每一次只能移动一个碟子,小碟子只能放在大碟子上面
4、将所有A柱子上的碟子移动到C柱子上

第一步

定义一个方法里面有碟子和3跟柱子的参数

public static void doTowers(int sp,char A,char B,char C){}

第二步

判断碟子数量是否为1,如果等于1,由A将碟子移动到C,如果不等于1,重新调用该方法(递归)不过盘子数减1(做的是A的碟子移动到B,B移动到C)

 public static void doTowers(int sp,char A,char B,char C){
        if (sp == 1){
            System.out.println("碟子数量:"+sp+" Form "+A+" To "+C);
        }else {
            doTowers(sp-1,A,C,B);
            System.out.println("碟子数量:"+sp+" Form "+A+" To "+C);
            doTowers(sp-1,B,A,C);
        }
    }

完成代码显示

 public static void main(String[] args){
        int sp = 3;
        doTowers(sp,'A','B','C');
    }
 public static void doTowers(int sp,char A,char B,char C){
	   if (sp == 1){
	       System.out.println("碟子数量:"+sp+" Form "+A+" To "+C);
	   }else {
	       doTowers(sp-1,A,C,B);
	       System.out.println("碟子数量:"+sp+" Form "+A+" To "+C);
	       doTowers(sp-1,B,A,C);
	   }
	}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值