Разница между прохождением массива в рекурсии против прохождения строки в рекурсииPython

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Разница между прохождением массива в рекурсии против прохождения строки в рекурсии

Сообщение Anonymous »

Я пытаюсь понять разницу между этими двумя методами рекурсии для перечисления комбинаций монет: < /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
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»