用递归的方法解决汉诺塔问题 汉诺塔是源自印度神话。

上帝创造世界的时候做了三根金刚石柱子,在一根柱子上从下    往上安大小顺序摞着 n 片黄金圆盘。  上帝命令婆罗门把圆盘从下面开始按大小顺序重新摆放在另一根柱子上。并且规定,在
   小圆盘上不能放大圆盘,在三根柱子之间一次只能移动一个圆盘。
    读入n,输出移动的顺序*/

public static void main(String[] args) {
		Scanner sc=new Scanner(System.in);
		System.out.println("请输入黄金圆盘的数量n");
		int n = sc.nextInt();
        char a = 'A',b = 'B',c = 'C';
        hanio(n,a,b,c);
    }
	
		// TODO Auto-generated method stub
		 public static void hanio(int n,char a, char b, char c){
		        //只有一个盘子的时候,就直接从A移到C
		        if(n == 1){
		            move(n,a,c);
		        }else{
		            //三步曲,注意观察,a,b,c三个的位置变化
		            //1.把 n-1 个盘子看成一个整体,借助 C 从 A 移动到 B
		            hanio(n-1,a,c,b);
		            //2.把第 n 个盘子从 A 移动到 C
		            move(n,a,c);
		            //3.再把 n-1 盘子整体,借助 A 从 B 移动到 C
		            hanio(n-1,b,a,c);
		        }
		    }

		    public static void move(int n , char a, char b){
		        System.out.println("把第"+ n +"个盘子从"+ a +"移到"+ b);
		    }
		
	

}

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值