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

被折叠的 条评论
为什么被折叠?



