汉诺塔问题
学习python时看到函数递归,又见汉诺塔问题,之前没弄清楚,记录一下
基本思路
把汉诺塔问题理解为递归,就是将所有盘子分成两部分,一部分是最下面最大的盘子,另一部分是剩余的n-1个盘子,每次移动的目的就是把n-1个盘子移到辅助柱子上,然后把最大的盘子移到目标柱子上,一直重复就可完成移动
测试代码
def move(n, a, b, c)#注意参数顺序,这里参数顺序表示把盘子从a移到c
if n==1:
print(a, '-->', c)#只有一个盘子的时候,直接将其移动到目标柱子
else:
#有多个盘子的情况
move(n-1, a, c, b)#将上面的n-1个盘子移动到b柱
print(a, '-->', c)#将剩下的最大的盘子移到目标c柱子
move(n-1, b, a, c)#剩下的n-1个盘子变成新问题:将n-1个盘子从b柱移到目标c柱

浙公网安备 33010602011771号