CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
山寨机中的战斗机! 程序优化工程师到底对IT界有没有贡献
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  Java >  J2SE / 基础类

汗落塔

楼主kunzhong(昆仲)2006-03-02 22:12:21 在 Java / J2SE / 基础类 提问

我现在有一个汗落塔的递归看不懂哦  
  请指教  
   
  package   untitled5;  
   
  import   java.awt.*;  
  import   java.awt.event.*;  
  import   javax.swing.*;  
   
  public   class   Hanio{  
      public   static   void   main(String   args[]){  
          String   s;  
          int   input;  
          s=JOptionPane.showInputDialog("请输入盘子的数:");  
          input=Integer.parseInt(s);  
          hanoi(input,'A','B','C');  
          System.exit(0);  
      }  
  public   static   void   move(char   ch1,char   ch2){  
      System.out.println(ch1+"--->"+ch2);  
   
  }  
  public   static   void   hanoi(int   x,char   a,char   b,char   c){  
      if(x==1)  
          move(a,c);  
          else  
          {  
                  hanoi(x-1,a,c,b);  
                  move(a,c);  
                  hanoi(x-1,b,a,c);  
          }  
  }  
  }  
   
  我现在就是看不懂public   static   void   hanoi(int   x,char   a,char   b,char   c){  
      if(x==1)  
          move(a,c);  
          else  
          {  
                  hanoi(x-1,a,c,b);  
                  move(a,c);  
                  hanoi(x-1,b,a,c);  
          }  
  }  
  x-1有什么用咯那hanoi(x-1,a,c,b);  
                                move(a,c);  
                                hanoi(x-1,b,a,c);  
  是怎么样调用的咯  
  只要盘子数是2的调用过程就可以的哦  
  谢谢  
  这个hanoi(x-1,a,c,b);里面的a,c,b怎么要这样排咯?还有b,a,c; 问题点数:20、回复次数:2Top

1 楼human_2(风一帆)回复于 2006-03-02 22:34:59 得分 0

hanoi(x-1(   源当前拥有盘子数),第一个参数:源,第二个:中间,第三个:目的);  
  如果源=1,直接到目的  
  否则,把源上面的(除了最下面一个)通过C到B  
      把A上最后一个到C  
  在通过A   把B上的盘子顺序移到C  
  Top

2 楼superman421(38度的雪)回复于 2006-03-03 09:59:56 得分 0

hanoi(input,'A','B','C');的意思是把input个盘子从A处移动到C处。  
   
   
    hanoi(x-1,a,c,b)     的意思是把x-1个盘子出A处移动到B处。  
    move(a,c);                 的意思是把第x个盘子从A处移动到C处。  
    hanoi(x-1,b,a,c)     的意思是把x-1个盘子出B处移动到C处。  
   
  如此递归下去。简单点说它的意思就是先想办法把A处的前input-1个盘子移到B处。这样最后一个盘子就可以移动C处了。剩下的有再想帮法移到C处。周而复始,直到移完。  
   
  Top

相关问题

  • C_汗偌塔问题(程序的递归)
  • 详讯:卡塔尔媒体称3名美军特种部队士兵在阿富汗被俘(图)
  • 我汗!
  • ◇◆◇ 中国失球!0:1暂时落后卡塔尔 ! ◇◆◇
  • (...汗...)终于......
  • 汗~郁闷~
  • 我的血汗钱
  • 这都能行,汗!
  • 汉诺塔!
  • 这种吃苹果法!!!汗!!!

关键词

  • 移动
  • hanoi
  • 盘子
  • move
  • 意思
  • ch
  • input
  • import
  • char
  • public static void

得分解答快速导航

  • 帖主:kunzhong

相关链接

  • CSDN Java频道
  • Java类图书
  • Java类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo