美文网首页
汉诺塔问题

汉诺塔问题

作者: 小吉头 | 来源:发表于2020-11-03 07:44 被阅读0次

    递归的特性

    • 调用自身
    • 有终止条件

    汉诺塔问题

    三根柱子ABC,n个盘子要从A移动到C


    • 从上到下的n-1个盘子从A经过C移动到B
    • 第n个盘子从A移动到C
    • B柱上的n-1个盘子经过A移动到C
    def hanoi(n,a,b,c): #n个盘子从a,经过b,移动到c
        if n > 0:
            hanoi(n-1,a,c,b) #n-1个盘子从a,经过c,移动到b
            print('从%s移动到%s' % (a,c)) #第n个盘子,从a移动到c,只要一步
            hanoi(n-1,b,a,c) #n-1个盘子从b,经过a,移动到c
    

    汉诺塔移动n个盘子所需次数公式:hanoi(n) = 2hanoi(n-1) + 1 约2^n
    汉诺塔问题满足递归的特性,调用自身,终止条件是n>0

    相关文章

      网友评论

          本文标题:汉诺塔问题

          本文链接:https://www.haomeiwen.com/subject/musvvktx.html