汉诺塔问题源于印度一个古老传说的益智玩具。变成数据问题就是:从左到右有A、B、C三根柱子,其中A柱子上面有从小叠到大的n个圆盘,现要求将A柱子上的圆盘移到C柱子上去,但是在三根柱子之间一次只能移动一个圆盘,小圆盘上不能放大圆盘,求移动的步骤和移动的次数。
这是程序设计中经典的递归问题,网上查了一下,可以用很多程序语言实现。
其中python的代码最少,但是却没看懂,先记下来,看看有没有大神能解释一下。
def move (n, a, b, c):
if n ==1:
print(a, '-->', c)
else:
move (n -1, a, c, b)
move (a, '-->', c)
move (n -1, b, a, c)
# 调用
move(3, 'A', 'B', 'C')
执行了一遍,结果是对的。这么复杂的问题就这么几行代码解决了,神奇。