我现在有一个汗落塔的递归看不懂哦
请指教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;
请指教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,直接到目的
否则,把源上面的(除了最下面一个)通过C到B
把A上最后一个到C
在通过A 把B上的盘子顺序移到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处。周而复始,直到移完。