如题:利用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);
}
}
人生若只如初见,何事秋风悲画扇。
等闲变却故人心,却道故人心易变。
-----------纳兰性德
小白寄语:学如逆水行舟,不进则退。