Изменение переменной неожиданно при рекурсии?

контекст

Я в настоящее время пытаюсь Reddit's/ r / dailyprogrammer challenge.

Идея состоит в том, чтобы найти решение лабиринта ASCII. К сожалению, рекурсия работает не так, как я ожидал. Программа проверяет, есть ли место для перемещения вправо, влево, ниже или выше текущего пространства. Если есть, то пространство перемещается в и функция вводится снова с новыми координатами. Это продолжается, пока не будет найден конец.

Когда конец найден, программа завершается. Если найден тупик, то рекурсия вернется к предыдущей точке и проверит наличие дальнейших указаний, это продолжается до конца.

проблема

Моя программа работает отлично, однако лабиринт рисует мои линии (обозначенные «*****») даже после того, как рекурсия будет скопирована. Я не знаю, как это объяснить, поэтому я буду использовать изображения, чтобы дать лучшее описание.

Каждый новый цвет представляет новый путь. Однако я ожидал, что покажет только текущий путь рекурсии. Например, в этом случае я бы ожидал показать только желтый путь. Может кто-нибудь помочь мне понять, почему остаются все пути?

Код
import time
import sys
import os

maze = """\
###############
#S        #   #
### ### ### # #
#   #   #   # #
# ##### ##### #
#     #   #   #
# ### # ### ###
# #   # #   # #
# # ### # ### #
# # # # # #   #
### # # # # # #
#   #   # # # #
# ####### # # #
#           #E#
###############"""

def displayMaze(maze):
    os.system("cls")
    display = ""
    for x in maze:
        for y in x:
            display = display + y
        display = display + "\n"
    print(display)

def findStart(maze):
    #Get the maze start co-ords.
    for x in range(0,len(maze[0])):
        for y in range(0,len(maze)):
            if maze[x][y] == "S":
                return x,y

def findPath(x,y,maze):
    #Look right, left, up and down, If path then move.
        time.sleep(0)
        if maze[y][x+1] == " ":
            newMaze = maze
            newMaze[y][x+1] = "*"
            displayMaze(newMaze)
            findPath(x+1,y,newMaze)
        elif maze[y][x+1] == "E":
            sys.exit("Done")
        if maze[y][x-1] == " ":
            newMaze = maze
            newMaze[y][x-1] = "*"
            displayMaze(newMaze)
            findPath(x-1,y,newMaze)
        elif maze[y][x-1] == "E":
            sys.exit("Done")
        if maze[y+1][x] == " ":
            newMaze = maze
            newMaze[y+1][x] = "*"
            displayMaze(newMaze)
            findPath(x,y+1,newMaze)
        elif maze[y+1][x] == "E":
            sys.exit("Done")
        if maze[y-1][x] == " ":
            newMaze = maze
            newMaze[y-1][x] = "*"
            displayMaze(newMaze)
            findPath(x,y-1,newMaze)
        elif maze[y-1][x] == "E":
            sys.exit("Done")


if __name__ == "__main__":
    maze = maze.split("\n")
    newMaze = []
    for line in maze:
        newMaze.append(list(line))
    x,y = findStart(newMaze)
    findPath(x,y,newMaze)

Ответы на вопрос(1)

Ваш ответ на вопрос