博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
数据结构--汉诺塔递归Java实现
阅读量:4935 次
发布时间:2019-06-11

本文共 1602 字,大约阅读时间需要 5 分钟。

1 /*汉诺塔递归 2  * 1.将编号0-N-1个圆盘,从A塔座移动到B上面 3  * 2.将编号N的1个圆盘,从A移动到C上面 4  * 3.最后将B上面的N-1个圆盘移动到C上面 5  * 注意:盘子的编号从上到下1-N 6  * */ 7 public class HannoTower_Recursion { 8  9     public static void main(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, char to) {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-->inter22             doTowers(topN-1, from, to, inter);23             //将第N个盘子从A移动到C---from-->to24             System.out.println("Disk " + topN  + "from " + from + " to " + to);25             //将前N-1个盘子从B移动到C---inter-->to26             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)

 

转载于:https://www.cnblogs.com/sun1993/p/7811455.html

你可能感兴趣的文章
express框架学习笔记
查看>>
记录一个css的综合运用
查看>>
操作系统下载路径
查看>>
网站开发 关于图片压缩 以及图片使用
查看>>
hive的count(distinct id)测试--慎用
查看>>
第九周周总结
查看>>
Logistic Regression
查看>>
8lession-基础类型转化
查看>>
FlashCS5作成SWC,在Flex4中使用(1)
查看>>
vue-cli目录结构及说明
查看>>
JS 数据类型转换
查看>>
WeQuant交易策略—RSI
查看>>
osgearth将视点绑定到一个节点上
查看>>
PHP 当前时间秒数+数值,然后再转换成时间。
查看>>
数据交互 axios 的使用
查看>>
bootloader,kernel,initrc
查看>>
Java中jshell脚本
查看>>
performSelector的方法
查看>>
redis
查看>>
BZOJ1645 [Usaco2007 Open]City Horizon 城市地平线
查看>>