递归Python函数-Can';我似乎不储存价值观
我使用递归函数返回两点之间的最佳路径,基于Floyd Warshall算法 我得到了路径,但由于某种原因,它只返回一个站点,而不是路径上的所有站点 我确信答案就在我面前,但我已经盯着这个代码看了一段时间了,似乎无法正确理解它递归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])
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]