|
|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
汉诺塔的移动可以用递归函数非常简单地实现。
请编写move(n, a, b, c)函数,它接收参数n,表示3个柱子A、B、C中第1个柱子A的盘子数量,然后打印出把所有盘子从A借助B移动到C的方法,例如:
def move(n, a, b, c):
if n==0:
return
move(n-1,a,c,b)
print(a,'-->',c)
move(n-1,b,a,c)
# 期待输出:
# A --> C
# A --> B
# C --> B
# A --> C
# B --> A
# B --> C
# A --> C
move(3, 'A', 'B', 'C')
本帖最后由 Yuki_wym 于 2017-6-30 15:12 编辑
可以去廖雪峰的网站看看,我觉得下边有人的解释还是不错的。我大概描述下
假设有n个盘子,那么要做的事(不考虑中间过程)就是先把上边n-1个盘子从A移到B,然后把最后一个移到C,最后把之前的n-1个从B移到C,对应的就是你程序中写的move(n-1,a,c,b)
print(a,'-->',c)
move(n-1,b,a,c)
|
|