Python之"汉诺塔游戏"
程序员文章站
2024-01-05 20:35:16
汉诺塔游戏: 上帝创造世界的时候做了三根金刚石柱子,在一根柱子上从下往上安大小顺序摞 着64片黄金圆盘。 上帝命令婆罗门把圆盘从下面开始按大小顺序重新摆放在另一根柱子上。 并且规定,在小圆盘上不能放大圆盘,在三根柱子之间一次只能移动一个圆盘。 步骤详解: # 参数:n代表盘子的个数 a,b,c分别代 ......
汉诺塔游戏:
上帝创造世界的时候做了三根金刚石柱子,在一根柱子上从下往上安大小顺序摞
着64片黄金圆盘。
上帝命令婆罗门把圆盘从下面开始按大小顺序重新摆放在另一根柱子上。
并且规定,在小圆盘上不能放大圆盘,在三根柱子之间一次只能移动一个圆盘。
def hanoi(n,a,b,c): if n == 1: print(a,"--->",c) else: hanoi(n-1,a,c,b) print(a,"--->",c) hanoi(n-1,b,a,c) hanoi(64,"a","b","c")
步骤详解:
# 参数:n代表盘子的个数 a,b,c分别代表三个柱子
def hanoi(n,a,b,c):
# 给递归一个出口 只有一个盘子的时候 直接从a移动到c
if n == 1:
print(a,"--->",c)
else:
# 除了最大的圆盘 其它的圆盘全部通过c柱子移动到b柱子
hanoi(n-1,a,c,b)
# 把a柱子上最大的圆盘移动到c柱子上 此时a柱子上没有圆盘了
print(a,"--->",c)
# 把b柱子上的n-1个圆盘 通过a移动到c
hanoi(n-1,b,a,c)
hanoi(64,"a","b","c")