汉诺塔(有点懵) 2020-10-8

    科技2026-06-06  9

    public class HanoiTower { public static void main(String[] args) { hanoiTower(5,'A','B','C'); } /** * * @param num * @param 第一个位置代表开始柱子 * @param 第二个位置代表中转柱子 * @param 第三个位置代表目标柱子 */ public static void hanoiTower(int num, char a, char b, char c) { //比如说3块中的上面那2块,再分割出的2块中的上面那块,代表着唯一剩下的那一块. // 虽然对这一块来说他去的是目标站点,但实际上是他是代表的是2块中的上面的那一块,因此它对与2块来说是去的中转站点,而在下面将中转站点去目标站点。 //这是否就是代表的把它看作两块,上面大的一块,下面一块,而上面大的那块中,又分割出上面大的一块,下面小的一块。递归的作用 if (num == 1 ){ System.out.println("第1个盘" + a + "->" + c); }else { //代表上面的那块大的那块去中转站点 hanoiTower(num - 1,a,c,b); //代表分割出来的下面的那一块 System.out.println("第" + num + "个盘" + a + "->" + c); //代表中转站点的块要去目标站点 hanoiTower(num - 1,b,a,c); } } }
    Processed: 0.014, SQL: 9