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




