Как постоянно добавлять в список с рекурсией - PullRequest
0 голосов
/ 24 сентября 2019

Я пытаюсь добавлять элемент в список каждый раз, когда он используется, но, поскольку существует несколько экземпляров списка, я не знаю, как добавить нужные элементы в окончательный список.

Это программа, которая возвращает минимальное количество монет, необходимое для внесения изменений, и список монет, необходимых для этого решения.Например, если вы хотите найти минимальное количество монет, необходимое для получения 48 центов в американской системе монет, функция вернет [6, [1, 10, 25]].

У меня был плансоздать пустой список, который бы добавлял к нему монету всякий раз, когда функция будет пытаться найти минимально возможное количество монет.Я знаю, как найти минимальное количество монет, которое требуется, но я пытаюсь найти способ добавить монеты в список.

Сейчас этот код просто находит минимальное количество монет, но мне нужно добавить его.какую бы монету он не использовал для этого решения в списке результатов и в конечном итоге вернуть решение с монетами.

def giveChange(amount, coins):
    ''' amount = non-negative integer
        coins = list of coin values with 1 always being in the list
        returns a list whose 1st item is the minimun number of coins and
        whose 2nd item is a list of coins in that optimal solution '''
    if amount > 0 and coins != []:
        result = []
        if coins == []:
            return 0
        else:
            result.append(coins[-1])
            useIt = amount // coins[-1] + giveChange(amount % coins[-1], coins[:-1])
            loseIt = giveChange(amount, coins[:-1])
            return min(useIt, loseIt)
    else:
        if amount == 0:
            return 0
        else:
            return float("inf")

В настоящее время этот код создает экземпляр «результата» и добавляет к нему монету.Проблема в том, что он не продолжает добавлять монеты в этот список;он продолжает создавать новые списки «результатов» и добавлять к ним следующую монету.

...