汉罗塔问题

来源:互联网 发布:c语言中str 编辑:程序博客网 时间:2024/05/17 06:58

对于经典的汉罗塔问题

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("输入的数字无效!!");  }   } }}