汉诺塔问题

学习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柱
posted @ 2021-08-16 17:03  xloading  阅读(63)  评论(0)    收藏  举报