汉诺塔
在一根柱子上从下往上按照大小顺序摞着几层圆盘。把圆盘从下面开始按大小顺序重新摆放在另一根柱子上。并且规定,在小圆盘上不能放大圆盘,在三根柱子之间一次只能移动一个圆盘。
这样就将A柱子上的前两层移动到了B柱子上,继续通过这样的方式就可以将更多层圆盘移动到C柱子上;
以下是通过递归的方法实现上面的步骤
import java.util.Scanner;
public class Test {
public static void main(String[] args) {
System.out.println("玩几层汉诺塔:");
int n = new Scanner(System.in).nextInt();
f(n);
}
private static void f(int n){
//n从A,经过B,到C
f(n,"A","B","C");
}
private static void f(int n,String z1,String z2,String z3){
//最简问题
if(n == 1){
System.out.println(z1 + "->" + z3);
return;
}
//n-1层,Z1->Z3->Z2
f(n-1,z1,z3,z2);
//最底下的一层,直接从z1->z3
System.out.println(z1+"->"+z3);
//n-1层,z2->z1->z3
f(n-1,z2,z1,z3);
程序执行时,用户输入一个int型整数,确定玩几层汉诺塔,然后程序执行,输出移动圆盘的步骤。