java汉诺塔递归算法_数据结构--汉诺塔递归Java实现

1 /*汉诺塔递归2 * 1.将编号0-N-1个圆盘,从A塔座移动到B上面3 * 2.将编号N的1个圆盘,从A移动到C上面4 * 3.最后将B上面的N-1个圆盘移动到C上面5 * 注意:盘子的编号从上到下1-N6 **/

7 public classHannoTower_Recursion {8

9 public static voidmain(String[] args) {10 int nDisk = 3;11 doTowers(nDisk,'A','B','C');12

13 }14

15 private static void doTowers(int topN, char from, char inter, charto) {16 if(topN == 1){17 //只有一个盘子编号为1,直接从A移动到C上面

18 System.out.println("Disk 1 " + "from " + from + " to " +to);19 }20 else{21 //将前N-1个盘子从A移动到B---from-->inter

22 doTowers(topN-1, from, to, inter);23 //将第N个盘子从A移动到C---from-->to

24 System.out.println("Disk " + topN + "from " + from + " to " +to);25 //将前N-1个盘子从B移动到C---inter-->to

26 doTowers(topN-1, inter, from,to );27 }28 }29

30 }

执行过程和结果

Enter(3 disks,A B C)

Enter(2 disks,A,C,B)

Enter(1disk,A B C)

Base case-->disk1 from A---C   //Disk 1 from A to C

Return(1disk A B C)

move disk 2 from A--B    //Disk 2from A to B

Enter(1disk, C,A,B)

Base case-->disk1 from C---B   //Disk 1 from C to B

Return(1disk C A B)

Return(2disk A C B)

move disk 3 from A--C    //Disk 3from A to C

Enter(2disk B A C)

Enter(1disk B C A)

Base case-->disk1 from B---A   //Disk 1 from B to A

Return(1disk B C A)

move disk 2 from B--C    //Disk 2from B to C

Enter(1disk A B C)

Base case-->disk1 from A---C   //Disk 1 from A to C

Return(1disk A B C)

Return(2disk B A C)

Return(3 disks,A B C)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值