汉诺塔

默认分类 无标签

之前学python的时候一直没搞懂这个问题,汉诺塔在各种语言的递归里很多都会讲到....

汉诺塔

有三根柱子,分别是A、B、C,n个盘子在A柱上,需要将盘子由A柱搬到C柱上,并规定小盘子不能放大盘子。

过程

假设有2个盘子,需要的步骤是将小盘子移到B柱,将大盘子移到C柱,再将小盘子从B柱移到C柱,也就是
A->B
A->C
B->C
2
2
假设有3个盘子,需要的步骤是先把A柱2个盘子移到B柱(和2个盘子一样,A柱起始柱,B柱是目标柱),再将最大的盘子移到C柱,再将B柱两个盘子移到C柱(和2个盘子一样,但是B柱起始柱,C柱是目标柱)
3

def hannuota(n,x,y,z):
    if n==1:
        print(x+"->"+z)
    else:
        hannuota(n-1,x,z,y)
        print(x+"->"+z)
        hannuota(n-1,y,x,z)

1条评论

    oner

    Oner前来拜访,欢迎互访,朋友

    安卓派 188 天前回复