复制代码 代码如下:
package com.tiantian.algorithms;
/**
* _|_1 | |
* __|__2 | |
* ___|___3 | | (1).把A上的4个木块移动到C上。
* ____|____4 | |
* A B C
*
* | | |
* | _|_1 |
* | __|__2 | 要完成(1)的效果,必须要把1、2、3木块移动到B,这样才能把4移动到C
* ____|____4 ___|___3 | 如:代码中的“调用(XX)”
* A B C
*
* | | |
* | _|_1 |
* | __|__2 | 此时,题目就变成了把B上的3个木块移动到C上,回到了题目(1)
* | ___|___3 ____|____4 如:代码中的“调用(YY)”
* A B C
*
* 然后循环这个过程
*
* @author wangjie
* @version 创建时间:2013-3-4 下午4:09:53
*/
public class HanoiTowerTest {
public static void main(String[] args) {
doTowers(4, 'A', 'B', 'C');
}
public static void doTowers(int topN, char from, char inter, char to){
if(topN == 1){
System.out.println("最后把木块1从" + from + "移动到" + to);
}else{
doTowers(topN - 1, from, to, inter); // 调用(XX)
System.out.println("把木块" + topN + "从" + from + "移动到" + to);
doTowers(topN - 1, inter, from ,to); // 调用(YY)
}
}
}