为什么当我初始化path =“”并且未使用任何值初始化path时,两个元素的输出都相同

问题描述

row = [ -1,1,0]
col = [  0,-1]

def isSafe(x,y,processed):
    return (0 <= x < M) and (0 <= y < N) and not processed[x][y]

def dfs(board,words,processed,i,j,path=""):
    processed[i][j] = True

    path = path + board[i][j]
    words.append(path)
    for k in range(4):
        if isSafe(i + row[k],j + col[k],processed):
            dfs(board,i + row[k],path="")
    processed[i][j] = False

def solve(board):
    processed = [[False for x in range(N)] for y in range(M)]
    words = []
    for i in range(M):
        for j in range(N):
            dfs(board,j)
    print(words)
board =[
    ['A','B'],['C','D']]
(M,N) = (len(board),len(board[0]))
solve(board)

输出

['A','AB','ABD','ABDC','AC','ACD','ACDB','B','BD','BDC','BDCA','BA','BAC','BACD','C','CA','CAB',' CABD','CD','CDB','CDBA','D','DB','DBA','DBAC','DC','DCA','DCAB']

我对dfs函数感到困惑,因为每次我用空字符串初始化路径时,输出列表的第二个元素应该是B但它是AB,并且像这样的第三个元素应该是{{ 1}},但在输出列表中为C,依此类推。请解释此递归

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)