Я пытаюсь понять разницу между этими двумя методами рекурсии для перечисления комбинаций монет: < /p>
В первом методе я прошел строку через рекурсию: < /p>
def cc_list(amount, n, combination_string):
if amount == 0:
print("Combi", combination_string[:-2])
return 1
elif n == 0 or amount < 0:
return 0
else:
return cc_list(amount-denomination(n), n, combination_string + str(denomination(n)) + " + ") + cc_list(amount, n-1, combination_string)
def denomination(n):
x = coins[n-1]
return x
cc_list(100,3,"")
< /code>
Это, по -видимому, дает результаты без проблем: < /p>
Combi 50 + 50
Combi 50 + 20 + 20 + 10
Combi 50 + 20 + 10 + 10 + 10
Combi 50 + 10 + 10 + 10 + 10 + 10
Combi 20 + 20 + 20 + 20 + 20
Combi 20 + 20 + 20 + 20 + 10 + 10
Combi 20 + 20 + 20 + 10 + 10 + 10 + 10
Combi 20 + 20 + 10 + 10 + 10 + 10 + 10 + 10
Combi 20 + 10 + 10 + 10 + 10 + 10 + 10 + 10 + 10
Combi 10 + 10 + 10 + 10 + 10 + 10 + 10 + 10 + 10 + 10
< /code>
Далее я попытался пропустить массив, чтобы подсчитать количество случаев для каждой монеты и распечатать их: < /p>
def cc_list(amount, n, counters):
if amount == 0:
print("Combi", str(print_50(counters[2])), str(print_20(counters[1])), str(print_10(counters[0])))
return 1
elif n == 0 or amount < 0:
return 0
else:
return cc_list(amount-denomination(n), n, update_counter(n, counters)) + cc_list(amount, n-1, counters)
def update_counter(n, c):
c[n-1] += 1
return c
cc_list(100, 3, [0,0,0])
< /code>
Но на этот раз я получаю результат ниже: < /p>
Combi 50 + 50
Combi 50 + 50 20 + 20 + 20 10
Combi 50 + 50 20 + 20 + 20 10 + 10 + 10 + 10
Combi 50 + 50 20 + 20 + 20 10 + 10 + 10 + 10 + 10 + 10 + 10 + 10 + 10
Combi 50 + 50 20 + 20 + 20 + 20 + 20 + 20 + 20 + 20 10 + 10 + 10 + 10 + 10 + 10 + 10 + 10 + 10
Combi 50 + 50 20 + 20 + 20 + 20 + 20 + 20 + 20 + 20 10 + 10 + 10 + 10 + 10 + 10 + 10 + 10 + 10 + 10 + 10
Combi 50 + 50 20 + 20 + 20 + 20 + 20 + 20 + 20 + 20 10 + 10 + 10 + 10 + 10 + 10 + 10 + 10 + 10 + 10 + 10 + 10 + 10 + 10 + 10
Combi 50 + 50 20 + 20 + 20 + 20 + 20 + 20 + 20 + 20 10 + 10 + 10 + 10 + 10 + 10 + 10 + 10 + 10 + 10 + 10 + 10 + 10 + 10 + 10 + 10 + 10 + 10 + 10 + 10 + 10
Combi 50 + 50 20 + 20 + 20 + 20 + 20 + 20 + 20 + 20 10 + 10 + 10 + 10 + 10 + 10 + 10 + 10 + 10 + 10 + 10 + 10 + 10 + 10 + 10 + 10 + 10 + 10 + 10 + 10 + 10 + 10 + 10 + 10 + 10 + 10 + 10 + 10 + 10
Combi 50 + 50 20 + 20 + 20 + 20 + 20 + 20 + 20 + 20 10 + 10 + 10 + 10 + 10 + 10 + 10 + 10 + 10 + 10 + 10 + 10 + 10 + 10 + 10 + 10 + 10 + 10 + 10 + 10 + 10 + 10 + 10 + 10 + 10 + 10 + 10 + 10 + 10 + 10 + 10 + 10 + 10 + 10 + 10 + 10 + 10 + 10 + 10
< /code>
В результате массива я предполагаю, что массив счетчиков передается в следующую рекурсию. Тем не менее, строка в первом методе, похоже, не передается в следующую рекурсию. Мне интересно, почему это так, будет признателен за помощь.
Подробнее здесь: https://stackoverflow.com/questions/795 ... n-recursio
Разница между прохождением массива в рекурсии против прохождения строки в рекурсии [закрыто] ⇐ Python
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
Разница между прохождением массива в рекурсии против прохождения строки в рекурсии
Anonymous » » в форуме Python - 0 Ответы
- 3 Просмотры
-
Последнее сообщение Anonymous
-