Java 经典递归hanoi塔问题

非常简单且经典的递归问题,先这样 在那样,最后在这样 就可以做出来了。

Java 经典递归hanoi塔问题_第1张图片

 

实现思想,如果只有一个碟子 那么直接把那个碟子移动到C柱上即可。 

如果有两个。那么先将A柱上的 n-1 个盘子数 借助C柱 移动到B柱上,然后将A柱上剩下的最后一个盘子 移动到C柱上,此时剩下的n-1个盘子 全部在B柱上。在把 B柱上的 n-1 个盘子数,从B柱开始,借助A柱,全部移动到C柱上,就完成了。

有三个及以上盘子数时,都是按照两个碟子的情况处理,以下为所有程序,粘贴复制即可运行。

import java.util.Scanner;

public class BoardTest {
    public static void main(String[] args) {
        System.out.printf("汉诺塔小游戏\n\n");
        System.out.println("请输入一共有一个碟子");

        Scanner scanner = new Scanner(System.in);
        while(true) {
            int n = scanner.nextInt();
            haoin haoin = new haoin();

            haoin.haoin("A", "B", "C", n);
            System.out.println("已经移动完成啦");
        }
    }
}

class haoin {
    void haoin(String A, String B, String C, int n) {
        if (n == 1) {
            move(A, C);
             return ;
        }
        haoin(A,C,"B",n-1);
        move(A,"C");
        haoin("B","A",C,n-1);
    }

    void move(String Q, String QQ) {
        System.out.println(Q + "->" + QQ);
    }
}

你可能感兴趣的:(java)