漢諾問題
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