关于汉诺塔的简单递归做法

首先汉诺塔的假设 有A, B, C三个柱子, A柱子上有n个圆盘,递归就是我们假设我们通过一种移动方法使得n-1个圆盘移动到B柱子上,至于怎么移动我不管,然后这样 A柱子只有一个最大的圆盘,直接移动到C就行了,然后我们再把这n-1个圆盘通过C移动到 A,这样问题就变成了 n-1个圆盘从A移动到C的问题了,递归出口呢就是当只有一个圆盘是我们直接把它移动到C就行了代码如下:

def hanoi(n, A, B, C):
    if n == 1:
        #当只有一个圆盘时,直接把这个圆盘从A移动到C
        print("{}--->>{}".format(A, C))
    else:
        #当有n个圆盘时我们先把n-1个圆盘从A通过C移动到B
        hanoi(n-1, A, C, B)
        #然后剩下的那个圆盘直接从A移动到C
        print("{}--->>{}".format(A, C))
        #最后B柱子上就剩下n-1个圆盘,然后问题就变成了 B柱子上的n-1个圆盘通过A移动到C的问题了
        hanoi(n-1, B, A, C)
hanoi(3, "A", "B", "C")

猜你喜欢

转载自www.cnblogs.com/python-zkp/p/10645762.html
今日推荐