递归Python函数-Can';我似乎不储存价值观

递归Python函数-Can';我似乎不储存价值观,python,recursion,Python,Recursion,我使用递归函数返回两点之间的最佳路径,基于Floyd Warshall算法 我得到了路径,但由于某种原因,它只返回一个站点,而不是路径上的所有站点 我确信答案就在我面前,但我已经盯着这个代码看了一段时间了,似乎无法正确理解它 def pathsense(nextstop, i, j): if nextstop[i][j] == i: miolopath[i][j] = miolopath[i][j] + ' ' + str(nextstop[i][j])

我使用递归函数返回两点之间的最佳路径,基于Floyd Warshall算法

我得到了路径,但由于某种原因,它只返回一个站点,而不是路径上的所有站点

我确信答案就在我面前,但我已经盯着这个代码看了一段时间了,似乎无法正确理解它

def pathsense(nextstop, i, j):

    if nextstop[i][j] == i:
        miolopath[i][j] = miolopath[i][j] + ' ' + str(nextstop[i][j])
        return
    else:
        miolopath[i][j] = miolopath[i][j] + ' ' + str(nextstop[i][j])
    pathsense(nextstop, i, nextstop[i][j])


# chamar comando para construir etapas

def pathreconstruction(nextstop, nV):
    for i in range(nV):
        for j in range(nV):
            miolopath[i][j] = i
            if i != j and distance[i][j] != 999999:
                pathsense(nextstop, i, j)
                optimalpath[i][j] = miolopath[i][j] + ' ' + str(j)
pathreconstruction部分回调pathsense(递归)函数。我需要它记录所有
nextstops[I][j]
,直到它到达路径上的最后一个

由于某种原因,它只返回沿途的一站

有什么帮助吗

干杯

不会再次调用pathsense,因为函数已经通过返回值退出。重新排列语句以解决此问题

def pathsense(nextstop, i, j):

    if nextstop[i][j] == i:
        return
    else:
        pathsense(nextstop, i, nextstop[i][j])
        return nextstop[i][j]
        

distance
optimizepath
在哪里?我不确定预期的逻辑,但您的函数总是在
if
else
子句中直接返回一些内容。递归调用永远不会到达,因为它在
return
语句之后。递归函数必须从递归返回的值加上它自己的贡献来构建返回值。在递归调用之前,您有
return nextstop[i][j]
。马上就会回来的,把它调高。知道了。但是如果我想将每个```nextstop[I][j]``存储在“else”条件中。
返回nextstop[i][j]
是存储那个还是只存储最后一个?明白了。但是如果我想将每个```nextstop[I][j]``存储在“else”条件中。
返回nextstop[i][j]
是存储该函数还是只存储最后一个函数?函数中的任何内容存储在哪里?我没有看到任何分配我现在添加了分配,但由于某些原因,它返回0.0(或无),仍在调试。已编辑!让我知道这是否有帮助。它似乎仍在返回迭代的最后一步……我认为问题可能在于
nextstop
矩阵
def pathsense(nextstop, i, j):

    if nextstop[i][j] == i:
        return
    else:
        pathsense(nextstop, i, nextstop[i][j])
        return nextstop[i][j]