У меня есть рекурсивная функция, которая пытается найти комбинации чисел, которые добавляют к определенному числу. Я сохранить результаты в списке под названием validCombinations
Python - Элементы списков как-то перезаписываются
Код:
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]]
У меня есть прошел через код, и кажется, что он каким-то образом перезаписывает элементы в списке, h в моем коде я только когда-либо взаимодействую с validCombinations
с помощью метода append()
, который должен просто добавить его в конец.
Я пропустил что-то или это рекурсия, вызывающая это?
«цифры» должны быть нижними границами для чисел, которые должны быть проверены? – BenjaminGolder
посмотрите, что здесь происходит: https://gist.github.com/anonymous/7cbd68961bc0b577a15f – BenjaminGolder
Мы не ожидаем [1,3] как действительного разложения 4? –