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,to); // 调用(YY)
}
}
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。