使用递归时如何将所有输出放在列表中?

时间:2017-03-27 13:26:23

标签: python recursion

我在python中做了八个皇后。我想使用append方法将所有输出放在列表中。 然而,所有输出变得相同是非常奇怪的。 任何人都可以帮助我PLZ;)

我正在使用四个皇后测试我的程序:

board = []
solution=[]

def isConflict(x, y):
   for (i, j) in board:
        if x == i:
            return True
        if y == j:
            return True
        if abs(x - i) == abs(y - j):
            return True
        else:
            return False


def solve(x,y):
    for y in range(1, 5):
        if isConflict(x, y)==False:
            board.append((x, y))
            solve(x + 1,y)
            board.remove((x,y))
    if x > 4:
        solution.append(board)
        print(solution)

solve(1,1)

输出如下:

[[(1, 2), (2, 4), (3, 1), (4, 3)]]
[[(1, 3), (2, 1), (3, 4), (4, 2)], [(1, 3), (2, 1), (3, 4), (4, 2)]]

但我想要的是:

[[(1, 2), (2, 4), (3, 1), (4, 3)]]
[[(1, 2), (2, 4), (3, 1), (4, 3)], [(1, 3), (2, 1), (3, 4), (4, 2)]]

我该怎么办?

0 个答案:

没有答案