我现在有一个汗落塔的递归看不懂哦
请指教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;

解决方案 »

  1.   

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

  2.   

    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处。周而复始,直到移完。