1

我正在写一些递归函数。考虑它的原型是:

def path(a, row=0, col=0, weight=0, cumulative=[])

我试图在矩阵中找到一些路径a。到目前为止,权重添加了该路径的值,并且累积跟踪路径。

在某些时候,它被调用:

return path(a, row+1, col, weight, cumulative) + path(a, row+1, col+1, weight, cumulative)

现在基本情况如下:

cumulative.append(a[row][col])
weight = weight + a[row][col]
return weight

它将当前矩阵元素添加到累积中,添加权重并返回权重。问题是每次cumulative调用 append 时,它都会添加到cumulative. 如何确保每个递归堆栈帧采用不同的副本cumulative

因此,当在基本情况下调用 append 时,我希望累积调用的值是帧调用者,而不是前一个递归堆栈帧。

有什么建议么?谢谢。

4

1 回答 1

1

您可以使用累积副本调用:

return path(a, row+1, col, weight, list(cumulative)) + 
       path(a, row+1, col+1, weight, list(cumulative))
于 2012-11-12T14:31:42.363 回答