汉诺塔非递归解法,为什么报错

问题遇到的现象和发生背景

要求将递归转化为堆栈问题解决汉诺塔

问题相关代码

img

运行结果及报错内容

img

如何调整参数使代码正常运行


class Stack:
    def __init__(self):
        self.data = []
    def is_empty(self):
        return len(self.data) == 0
    def push(self, n):
        self.data.append(n)
    def pop(self):
        if self.is_empty():
            return None
        else:
            return self.data.pop()

def Hanoi(n):
    A = 'A'
    B = 'B'
    C = 'C'
    move = Stack()
    # condition1 = (n, A, B, C)
    # condition2 = (n - 1, B, A, C)
    # condition3 = (n - 1, A, C, B)
    # condition4 = (1, A, B, C)
    move.push((n, A, B, C))
    while move.is_empty() == False:
        (n, A, B, C) = move.pop()
        if n == 1:
            print (A, '-->', C)
        else:
            move.push((n - 1, B, A, C))
            move.push((1, A, B, C))
            move.push((n - 1, A, C, B))

Hanoi(3)


类对象要改, move = Stack()

改完之后,发现进入了 while死循环,data越来越多,代码逻辑还有问题,需要进一步修改