Hanoi 塔问题(Java 实现)
Hanoi 塔问题(Java 实现)
Hanoi 塔问题是一个很经典的递归问题
设 a,b,c 是 3 个塔座。开始时,在塔座 a 上有一叠共 n 个圆盘,这些圆盘自下而上,由大到小地叠在一起。各圆盘从小到大编号为 1,2,…,n,现要求将塔座 a 上的圆盘移到塔座 b 上,并仍按同样顺序叠置。在移动圆盘时应遵守以下移动规则:
规则 1:每次只能移动 1 个圆盘;
规则 2:任何时刻都不允许将较大的圆盘压在较小的圆盘之上;
规则 3:在满足移动规则 1 和 2 的前提下,可将圆盘移至 a,b,c 中任一塔座上。
思路
如果只有 1 个圆盘,a --> c
如果圆盘数大于 1
将 n - 1 个圆盘,从 a 借助 c 移动到 b
将剩下 1 个圆盘从 a 移动到 c
将 n - 1 个圆盘,从 b 借助 a 移动到 c
Java 源代码
复制代码
版权声明: 本文为 InfoQ 作者【若尘】的原创文章。
原文链接:【http://xie.infoq.cn/article/d2dd48480c7bade40c37b70d6】。文章转载请联系作者。
评论