我有一个递归函数,试图找到添加到特定数字的数字组合。我将结果存储在名为validCombinations
代码:
sum = 4
digits = 2
currentDigit = digits
validCombinations = []
#recursion function to find combinations of numbers that add to the sum variable
def recursive(index):
if 10 not in digitList:
if index >= 0:
total = 0
for n in digitList:
total += n
if total == sum:
validCombinations.append(digitList)
digitList[index] += 1
recursive(index-1)
else:
recursive(currentDigit-1)
digitList = []
for n in range(digits,0,-1):
for i in range(n):
digitList.append(0)
recursive(n-1)
digitList = []
currentDigit -= 1
print validCombinations
运行时输出
[[9, 10], [10, 0]]
当我希望看到这个
时[[2, 2], [4]]
我已经介入了代码,似乎它以某种方式覆盖了列表中的元素,但是在我的代码中,我只使用validCombinations
方法与append()
进行交互,这应该只是把它添加到最后。
我是否遗漏了某些内容,或者是导致这种情况的递归?
答案 0 :(得分:1)
使用清单:
if total == sum:
validCombinations.append(list(digitList))
您必须获得digitList的副本,而不是digitList。