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