閱讀63 返回首頁    go 阿裏雲 go 技術社區[雲棲]


漢諾問題

package com.chapter.five.one.cn;

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;
    	moveDish(nDisks, 'A', 'B', 'C');
    }
}

輸出:

從 A移動盒子1號到C
從A移動盤子2號到B
從 C移動盒子1號到B
從A移動盤子3號到C
從 B移動盒子1號到A
從B移動盤子2號到C
從 A移動盒子1號到C


最少移動次數是2的N次方-1

最後更新:2017-04-02 16:47:36

  上一篇:go 計算機存儲
  下一篇:go 過了30歲,程序員該怎麼辦?