Проблема с рекурсией в 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)