汉诺塔是一种古老的智力游戏,以法国数学家Edouard Lucas的名字命名。这个游戏包括三个塔和一些圆盘,这些圆盘按照从大到小的顺序放在一个塔上。游戏的目标是将所有的盘子从一个塔移动到另一个塔上,但是每次你只能移动一个盘子并且不能将较大的盘子放在较小的盘子上。
def hanoi(n, source, target, auxiliary): if n == 1: print("移动盘子1从 " + source + " 到 " + target) return hanoi(n-1, source, auxiliary, target) print("移动盘子" + str(n) + "从 " + source + " 到 " + target) hanoi(n-1, auxiliary, target, source) n = 3 hanoi(n, 'A', 'C', 'B')
下面是代码解释:
hanoi函数使用递归的方式实现汉诺塔的移动。如果n等于1,则只需将一个盘子从源塔移动到目标塔。否则,将n-1个盘子从源塔移动到辅助塔,然后将最后一个盘子从源塔移动到目标塔。最后,将n-1个盘子从辅助塔移动到目标塔。
在主函数中,我们调用hanoi函数,并将源塔、目标塔和辅助塔指定为A、C和B。在此示例中,我们将3个盘子移动到目标塔上。
执行代码,输出结果如下:
移动盘子1从 A 到 C 移动盘子2从 A 到 B 移动盘子1从 C 到 B 移动盘子3从 A 到 C 移动盘子1从 B 到 A 移动盘子2从 B 到 C 移动盘子1从 A 到 C
从结果可以看出,我们已经成功地将3个盘子从A移到了C。