python рекурсия кода: сколько компиляции вы можете получить из числа в виде суммы, но я не понимаю, как я могу напечатать эту компиляцию - PullRequest
0 голосов
/ 05 января 2020

python рекурсия кода: этот код дает вам, сколько компиляций вы можете получить из числа в виде суммы списка (например: n = 4 list = [1,2] результат - 5 способов), но я Не понимаю, как я могу напечатать этот сборник, кто-нибудь за помощью? (1 + 1 + 1 + 1, 1 + 1 + 2, 1 + 2 + 1, 2 + 1 + 1, 2 + 2)


def count_many_times(n,lst):
    ''' func count how many combination we can make '''
    if n==0:
        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)
    return counter

def string_to_int():
    ''' convert string to int '''
    st_int = [int(x) for x in input().split(' ')]
    return st_int

def main():
    lst=[]
    sub_lst = string_to_int()
    while sub_lst[0] != 0: # this loop goes until we find 0
        lst.append(sub_lst)
        sub_lst = string_to_int()

    for i in lst: 
        for j in i: 
            n=i[0] # take first number
            num_parts=list(i[1:]) # take the other like alist to calulate combination
            x = count_many_times(n,num_parts) # function give me num of combination
        print(x)
main()

1 Ответ

0 голосов
/ 05 января 2020

Вы можете сохранить текущую компиляцию при каждом рекурсивном вызове, и когда вы нажмете базовый случай 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...