public class HanNuoTa {
public static void move(int sum, Stack<Integer> left, Stack<Integer> middle, Stack<Integer> right) {
if (sum == 1) {
right.push(left.pop());
return;
} else {
// 把左边的柱子除去最大的罗盘都移到中间的柱子上
move(sum - 1, left, right, middle);
// 把左边的柱子上最底下的那个罗盘移到最右边的柱子上
move(1, left, middle, right);
// 然后把中间柱子上的罗盘全部移到最右边的柱子上
move(sum - 1, middle, left, right);
}
}
public static void main(String[] args) {
// 初始化数据
Stack<Integer> left = new Stack<>();
Stack<Integer> middle = new Stack<>();
Stack<Integer> right = new Stack<>();
left.push(5);
left.push(4);
left.push(3);
left.push(2);
left.push(1);
// 递归
move(left.size(), left, middle, right);
// 打印
while (!right.isEmpty()) {
System.out.println(right.pop());
}
}
}
汉诺塔
最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
推荐阅读更多精彩内容
- 我们在按照软件时,可能会经常碰到这种情况。别急,这肯能不是包的问题。 1.打开设置->安全性与隐私->通用,在”允...