河内塔(经典的算法JAVA实现)

河内塔 是法國人M.Claus(Lucas)于1883年从泰国带回法国的 


據說創世紀時Benares有一座波羅教塔,是由三支鑽石棒(Pag)所支撐,開始時神在第一根棒上放置64個由上至下依由小至大排列的金盤(Disc),並命令僧侶將所有的金盤從第一根石棒移至第三根石棒,且搬運過程中遵守大盤子在小盤子之下的原則,若每日僅搬一個盤子,則當盤子全數搬運完畢之時,此塔將毀損,而也就是世界末日來臨之時。
  但是假如盘子是64的话  得出的结果
2得64次方- 1 = 18446744073709551615
也就是大约5000世纪  也就是说假如每秒移动一个盘子  也要大约5850億年左右!!!


import java.util.*;
public class Hanoi
{   
public static void main(String args[])
{      
     System.out.print("请输入有几个盘子:");    
     Scanner s = new Scanner(System.in);   
     Hanoi hanoi = new Hanoi();     
     hanoi.move(s.nextInt(), 'A', 'B', 'C');    }  
public void move(int n, char a, char b, char c)
{      
if(n == 1)
  {           
      System.out.println("盘子由 " + a + " 移至 " + c);    
  }     
  else {         
          move(n - 1, a, c, b); 
          move(1, a, b, c);    
          move(n - 1, b, a, c);   
    }  
}
}

你可能感兴趣的:(java,C++,c,算法,C#)