中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

java怎么解決漢諾塔問題

小億
83
2024-09-26 03:47:06
欄目: 編程語言

漢諾塔問題是一個經典的遞歸問題

  1. 首先,我們需要定義一個漢諾塔的類,其中包含三個變量:源柱子(source)、輔助柱子(auxiliary)和目標柱子(target)。
public class HanoiTower {
    private int source;
    private int auxiliary;
    private int target;

    public HanoiTower(int source, int auxiliary, int target) {
        this.source = source;
        this.auxiliary = auxiliary;
        this.target = target;
    }
}
  1. 接下來,我們需要定義一個遞歸方法moveDisk,該方法接受四個參數:漢諾塔對象、源柱子上的磁盤數量、輔助柱子和目標柱子。
public void moveDisk(HanoiTower tower, int n, int from, int to, int via) {
    if (n == 1) {
        System.out.println("Move disk 1 from " + from + " to " + to);
    } else {
        moveDisk(tower, n - 1, from, via, to);
        System.out.println("Move disk " + n + " from " + from + " to " + to);
        moveDisk(tower, n - 1, via, to, from);
    }
}
  1. 最后,我們可以在主方法中創建一個漢諾塔對象,并調用moveDisk方法來解決問題。
public class Main {
    public static void main(String[] args) {
        HanoiTower tower = new HanoiTower(1, 2, 3);
        moveDisk(tower, 3, 1, 3, 2);
    }
}

運行上述代碼,你將看到解決3個磁盤漢諾塔問題的詳細步驟。你可以通過更改moveDisk方法的第一個參數來改變磁盤的數量。

0
布尔津县| 卢龙县| 南乐县| 凌云县| 武义县| 伊通| 宜丰县| 邻水| 云林县| 宁武县| 井冈山市| 佛学| 海丰县| 玉屏| 紫阳县| 娄烦县| 延庆县| 海城市| 安溪县| 巴塘县| 谷城县| 东乌珠穆沁旗| 将乐县| 乌拉特中旗| 黄浦区| 林西县| 彰武县| 二连浩特市| 皮山县| 徐水县| 云安县| 泰顺县| 凯里市| 漯河市| 阳信县| 乌苏市| 普格县| 古浪县| 天气| 玉门市| 邯郸县|