I';我在用python为河内塔问题找到正确的迭代方法时遇到了问题

I';我在用python为河内塔问题找到正确的迭代方法时遇到了问题,python,Python,我被指派用python为河内塔问题找到一个迭代解决方案,我还发现了一些伪代码,它们确实很有帮助。唯一的问题是,此伪代码无助于向后移动磁盘。以下代码确实显示了运动中涉及的正确两极,但并不总是正确的方向。有人知道如何解决这个问题,或者知道不同的解决方案吗?下面是我找到伪代码的站点的链接。(我的代码以以下定义开头,但我无法使其也位于代码块中) 对我来说,代码运行良好,您的问题代码中有一个输入错误(最后一个if语句zetten.append()而不是moves.append()) 到底出了什么问题,您希

我被指派用python为河内塔问题找到一个迭代解决方案,我还发现了一些伪代码,它们确实很有帮助。唯一的问题是,此伪代码无助于向后移动磁盘。以下代码确实显示了运动中涉及的正确两极,但并不总是正确的方向。有人知道如何解决这个问题,或者知道不同的解决方案吗?下面是我找到伪代码的站点的链接。(我的代码以以下定义开头,但我无法使其也位于代码块中)


对我来说,代码运行良好,您的问题代码中有一个输入错误(最后一个if语句zetten.append()而不是moves.append())


到底出了什么问题,您希望它做什么?向后移动应该是什么?

例如,如果n=3,正确的代码是['AC','AB','CB','AC','BA','BC','AC'],而我的代码是['AC','AB','BC','AC','AB','BC','AC']。因此,在我的代码中,“BC”和“AB”应该切换,因为你将光盘从C极移到B极,而不是从其他极移到B极。我现在的代码没有区分光盘移动的方向,在我的代码中光盘总是向右移动。因此,我的代码对于移动发生的特定极是正确的,而不是方向。@Thomas that问题来自附加列表的语句。
moves.append(起始字母+中间字母)
它将始终按该顺序插入字母。
def hanoi_iterative(n):

    moves = []
    number_of_moves = 2**n-1
    starting_pole = 'A'
    middle_pole = 'B'
    end_pole = 'C'
    i = 0
    if n % 2==0:
        end_pole = 'B'
        middle_pole = 'C'
    while i in range(0,number_of_moves):
        i +=1
        if i%3 == 1:
            moves.append(starting_pole + end_pole)
        if i%3 == 2:
            moves.append(starting_pole + middle_pole)
        if i%3 == 0:
            zetten.append(middle_pole + end_pole)
    return moves
def hanoi_iterative(n):

    moves = []
    number_of_moves = 2**n-1
    starting_pole = 'A'
    middle_pole = 'B'
    end_pole = 'C'
    i = 0
    if n % 2==0:
        end_pole = 'B'
        middle_pole = 'C'
    while i in range(0,number_of_moves):
        i +=1
        if i%3 == 1:
            moves.append(starting_pole + end_pole)
        if i%3 == 2:
            moves.append(starting_pole + middle_pole)
        if i%3 == 0:
            moves.append(middle_pole + end_pole)

    return moves

print(hanoi_iterative(3))