首先汉诺塔的假设 有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")