• 数据结构--汉诺塔递归Java实现


     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-->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)

  • 相关阅读:
    F广搜
    Python中range和xrange的异同之处
    数组中出现次数超过一半的数字
    iOS开发之剖析"秘密"App内容页面效果(一)
    Balloon Comes!
    scikit-learn: isotonic regression(保序回归,非常有意思,仅做知识点了解,但差点儿没用到过)
    C#数据缓存介绍及Caching通用帮助类整理
    SVN Working copying 'xxxxx/xxxx/xxxx' locked
    读书笔记-APUE第三版-(7)进程环境
    UVA 10555
  • 原文地址:https://www.cnblogs.com/sun1993/p/7811455.html
Copyright © 2020-2023  润新知