程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> 關於JAVA >> Java數據構造及算法實例:漢諾塔成績 Hanoi

Java數據構造及算法實例:漢諾塔成績 Hanoi

編輯:關於JAVA

Java數據構造及算法實例:漢諾塔成績 Hanoi。本站提示廣大學習愛好者:(Java數據構造及算法實例:漢諾塔成績 Hanoi)文章只能為提供參考,不一定能成為您想要的結果。以下是Java數據構造及算法實例:漢諾塔成績 Hanoi正文


/** 
 * 漢諾塔年夜學的時刻就學過,然則基本沒弄明確,獨一曉得的就是要用遞歸的辦法來求解。 
 * 成績描寫: 
 * 有三根桿子A,B,C。A桿上有N個(N>1)穿孔圓盤,盤的尺寸由下到上順次變小。 
 * 請求按以下規矩將一切圓盤移至C桿: 
 * 1.每次只能挪動一個圓盤; 
 * 2.年夜盤不克不及疊在小盤下面。 
 * 提醒:可將圓盤暫時置於B桿,也可將從A桿移出的圓盤從新移回A桿, 
 * 但都必需尊循上述兩條規矩。 
 * 問:若何移?起碼要挪動若干次? 
 * 處理辦法: 
 * 假定只要2個盤子,柱子分離是A, B, C柱。那末只須要三步便可以把他們從A柱移到C柱, 
 * 這三步是A->B, A->C, B->C。 
 * 假如盤子數n跨越2呢,我們便可以把這些盤子算作由最上面的誰人盤子和 下面n-1個盤子 兩部門, 
 * 這兩部門異樣可以用下面的三步完成挪動。 
 * 也就是說我們可以經由過程遞歸地挪用下面的步調完成將一切n個盤子從A柱挪動到C柱。 
 */ 
package al; 
public class Hanoi { 
   
  public static void main(String[] args) { 
     
    Hanoi hanoi = new Hanoi(); 
    hanoi.move(3, 'A', 'B', 'C'); 
  } 
   
  /** 
   * @author 
   * @param n 盤子數量 
   * @param from 肇端柱子 
   * @param temp 中央柱子 
   * @param to 目的柱子 
   */ 
  public void move(int n, char from, char temp, char to) { 
    if(n == 1) { 
      System.out.println("Move 1 plate from " + from + " to " + to); 
    } else { 
      move(n-1, from, to, temp); 
      move(1, from, temp, to); 
      move(n-1, temp, from, to); 
    } 
  } 
} 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved