问题描述
有三根杆子A,B,C 。A杆上有N个(N>1)穿孔圆盘,盘的尺寸由下到上依次变小。要求按下列规则将所有圆盘移至C杆:
* 1 每次只能移动一个圆盘;
* 2 大盘不能叠在小盘上面。
提示:可将圆盘临时置于B杆,也可以将A杆移除的圆盘重新移动回A杆,但都必须遵循上述两条规则。
问:如何移?最少要移动多少次?
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class Test6_1 {
public static void main(String[] args) throws NumberFormatException, IOException
{
int n;
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
System.out.print("请输入盘数");
n = Integer.parseInt(br.readLine());
move(n, "A", "B", "C");
}
static void move(int n, String a, String b, String c)
{
if (n == 1)
{
System.out.println("盘 " + n + " 由 " + a + "移动到" + c);
}
else
{
move(n - 1, a, c, b);
System.out.println("盘 " + n + " 由 " + a + "移动到" + c);
move(n - 1, b, a, c);
}
}
}