package zcx;
import java.util.Scanner;
/**
* 汉诺塔问题
* @author Zcxu
* 它的规则是这样的:有n个盘
* 1.将n-1个盘先移动到辅助盘上
* 2.将第n个盘移动到目的位置
* 3.将辅助盘上的n-1个盘子移动到目的盘子上。
*/
public class Hanoi {
static int count = 1;
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("输入一个n,表示有多少个盘子:");
int n = sc.nextInt();
act('A','B','C',n);
}
public static void act(char A,char B,char C,int n){
if(n<=0){
System.out.println("输入的数字有错");
return;
}
if(n==1){
System.out.println(count++ + ".Move " + A + "
through " + B + " to " + C);
}else{
act(A,C,B,n-1);//将n-1个盘先移动到辅助盘上
System.out.println(count++ + ".Move " + A + "
through " + B + " to " + C);
act(B,A,C,n-1);//辅助盘上的n-1个盘子移动到目的盘子上
}
}
}
import java.util.Scanner;
/**
* 汉诺塔问题
* @author Zcxu
* 它的规则是这样的:有n个盘
* 1.将n-1个盘先移动到辅助盘上
* 2.将第n个盘移动到目的位置
* 3.将辅助盘上的n-1个盘子移动到目的盘子上。
*/
public class Hanoi {
static int count = 1;
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("输入一个n,表示有多少个盘子:");
int n = sc.nextInt();
act('A','B','C',n);
}
public static void act(char A,char B,char C,int n){
if(n<=0){
System.out.println("输入的数字有错");
return;
}
if(n==1){
System.out.println(count++ + ".Move " + A + "
through " + B + " to " + C);
}else{
act(A,C,B,n-1);//将n-1个盘先移动到辅助盘上
System.out.println(count++ + ".Move " + A + "
through " + B + " to " + C);
act(B,A,C,n-1);//辅助盘上的n-1个盘子移动到目的盘子上
}
}
}