Вы можете сохранить текущую компиляцию при каждом рекурсивном вызове, и когда вы нажмете базовый случай n==0
, то есть компиляция успешно найдена, вы сможете распечатать текущий компилятор.
def count_many_times(n,lst,compilation=[]):
''' func count hoy many combination we can make '''
if n==0:
print(compilation)
return 1
if n<0:
return 0
counter=0
for num in lst:
''' this loop check wich number can bring me the n number by adding'''
counter += count_many_times(n-num,lst,compilation+[num])
return counter
print(count_many_times(4,[1,2]))
Выход
[1, 1, 1, 1]
[1, 1, 2]
[1, 2, 1]
[2, 1, 1]
[2, 2]
5