程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> JAVA編程入門知識 >> java求解漢諾塔問題示例

java求解漢諾塔問題示例

編輯:JAVA編程入門知識

思路如下:

要實現3階漢諾塔的求解步驟,也就是說初始狀態時,A上從上到下有三個盤子,分別為1號盤、2號盤和3號盤,其中1號盤最小,3號盤最大;
判斷剩余盤子個數,如果只有一個盤子就退出迭代,如果有大於一個盤子就繼續迭代。
代碼如下:

代碼如下:

public class HanoiTower {
    public static void moveDish(int level, char from, char inter, char to) {
        if (level == 1) {// 如果只有一個盤子就退出迭代
            System.out.println("從 " + from + " 移動盤子 1 號到 " + to);
        } else {// 如果有大於一個盤子就繼續迭代
            moveDish(level - 1, from, to, inter);
            System.out.println("從 " + from + " 移動盤子 " + level + " 號到 " + to);
            moveDish(level - 1, inter, from, to);
        }
    }

    public static void main(String[] args) {
        int nDisks = 3;// 設置漢諾塔為3階
        moveDish(nDisks, 'A', 'B', 'C');// 實現移動算法
    }
}

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