私はいくつかの再帰関数を書いています。そのプロトタイプを次のように考えます。
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
現在の行列要素を累積に追加し、重みを追加して、重みを返します。問題は、 append を呼び出すたびcumulative
に、 のまったく同じインスタンスに追加されることですcumulative
。各再帰スタック フレームが の異なるコピーを取るようにするにはどうすればよいcumulative
ですか?
したがって、基本ケースで追加が呼び出されると、呼び出される累積の値が、前の再帰スタック フレームではなく、フレームの呼び出し元のものになるようにします。
助言がありますか?ありがとう。