Это функция @harry на SO-сайте вашей ссылки:
def subset(array, num):
result = []
def find(arr, num, path=()):
if not arr:
return
if arr[0] == num:
result.append(path + (arr[0],))
else:
find(arr[1:], num - arr[0], path + (arr[0],))
find(arr[1:], num, path)
find(array, num)
return result
Это ваши данные:
arr = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
trgt = 10
функция сверху, примененная к вашим данным:
subset(arr, trgt)
#[(1, 2, 3, 4),
# (1, 2, 7),
# (1, 3, 6),
# (1, 4, 5),
# (1, 9),
# (2, 3, 5),
# (2, 8),
# (3, 7),
# (4, 6),
# (10,)]
Поэтому я бы посоветовал вам перейти по ссылке, ответить на вопрос Гарри и использовать ее.