汉诺塔,巧用递归
写出来个算法这个游戏你就无敌了,这次就是要打印出每一步要走的路线
咱们要做的就是将N个小块儿从A挪到B,C作为一个辅助空间
思考:
这里咱们需要考虑哪些步骤是重复的,可以用递归,然后找到切入点,找到边界,这些都是使用递归时必须要考虑的点;
分析:
1.把1~(N-1)个盘子先移动到辅助盘C上,然后将A移动到B (这是重复的点),接下来将最下面的移动到B中,以此类推就可以明白怎么使用递归代码如下:
public static void main(String[] args) {
printHanNuoTower(4,"A","B","C");
}
@Test
static void printHanNuoTower(int N, String from, String to, String help) {
if (N == 1) {
System.out.println(" move " + N + " from " + from + " to " + to);
return;
}
printHanNuoTower(N - 1, from, help, to);
System.out.println(" move " + N + " from " + from + " to " + to);
printHanNuoTower(N - 1, help, to, from);
}
测试的结果如下
然后这个游戏你就无敌了,快去试玩两把吧!