Проблема с рекурсией в Python

Из списка чисел, вывести числа, которые в сумме дадут таргет

Пример:

инпут:

2,3,6,7 7

аутпут:

2 2 3
7

код:

class Solution:
    def combinationSum(self, nums: list, target: int) -> list:
        for i in nums:
            if i == 0:
                break
            else:
                nums.sort()
                solution=[]
                self.combinationSumRec(nums, target, 0, 0, [], solution)
                return solution

    def combinationSumRec(self, nums, target, index, sum, lst, solution):
        if sum == target:
            solution.append(list(lst))
        for i in range(index,len(nums)):
            if sum + nums[i] > target:
                break
            lst.append(nums[i])
            self.combinationSumRec(nums, target, i, sum+nums[i], lst, solution)
            lst.pop()

при запуске возникает проблема RecursionError, возможно потому что в списке чисел может быть 0. помогите, пожалуйста, усовершенствовать код


Ответы (1 шт):

Автор решения: rokitoker

Если задача понята мною правильно, то вот

from itertools import combinations

array = [1, 2, 3, 4, 0, 22, 8]
sum_should_be = 25
all_combinations = []
result=[]

for i in range(1, len(array) + 1):
    all_combinations.append(list(combinations(array, i)))

for combine in all_combinations:
    for element in combine:
        if sum(element) == sum_should_be:
            result.append(element)

print(result)
→ Ссылка