对于经典的汉罗塔问题
import java.util.Scanner;
public class MyHanluoTa {
/**
* @param args
* @author
* @category 证明了汉罗塔的解不能少于2^n-1次移动
*/
public static int sum = 0;
public static void move(char A,char C){
System.out.println(A+"-->"+C);
sum++;
}
public static void sloveTown(int n,char start,char temp,char end){
if(n <= 1){
move(start,end);
}else{
sloveTown(n-1, start, end, temp);
move(start, end);
sloveTown(n-1, temp,start, end);
}
}
public static void main(String[] args) {
while(true){
sum = 0;
Scanner scanner = new Scanner(System.in);
System.out.println("请输入汉罗塔的盘子数n:");
int n = scanner.nextInt();
if(n>=1){
sloveTown(n,'A','B','C');
System.out.println("盘子移动的总次数为:"+sum);
}else{
System.out.println("输入的数字无效!!");
}
}
}
}