Рекурсия не является хорошим способом для продолжения, так как вы не хотите применять ту же функцию к «уменьшенным» массивам. Вы хотите проверить все комбинации, поэтому я настоятельно рекомендую использовать itertools
.
itertools.combinations(my_array, my_length)
делает все возможные комбинации my_array
элементов с длиной my_length
, без повторений (что означает, что порядок не важно, у вас не будет ни [a, b], ни [b, a])
from itertools import combinations
L = [1, 2, 3, 4, 5, 1]
target = 10
for i in combinations(L, 4):
if sum(i) == target:
print(i)
Вывод:
(1, 2, 3, 4)
(1, 3, 5, 1)
(2, 3, 4, 1)