汉诺塔,巧用递归

点击此处先玩两把

写出来个算法这个游戏你就无敌了,这次就是要打印出每一步要走的路线


咱们要做的就是将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);

    }

测试的结果如下

然后这个游戏你就无敌了,快去试玩两把吧!