汉诺塔问题

策略:分治算法
需求:一个珠子上从小到大拜访了64个圆盘,要求把他重新放在另一根柱子上,要求大圆盘不能在小圆盘上面,每次只能移动一根柱子。
解决思路:
汉诺塔问题_第1张图片
汉诺塔问题_第2张图片

public static void hanoiTower(int num,char x,char y,char z){
        //如果只有一个盘
        if(num==1)
        {
            System.out.println("第1个盘从"+x+"->"+z);
        }else{
            //如果大于等于2
            //先把最上面的所有盘从A移动到B,移过程中会用到C
            hanoiTower(num-1,x,z,y);
            //把最下边的从A移动到C
            System.out.println("第"+num+"个盘从"+x+"->"+z);
            //把B盘所有的从B移动到C,移动过程中使用到A盘
            hanoiTower(num-1,y,x,z);
        }

你可能感兴趣的:(递归)