Мне нужна помощь, потому что я думаю, что я потерялся. Я искал их раньше на этом сайте, и, конечно же, у меня есть это Google, но поверьте мне, что, если это было так просто для меня, я не спрашиваю об этом вообще, поэтому, пожалуйста, будьте добры ко мне. Я новичок в python и кодировании не так просто для меня.Код Python - я застрял - рекурсия
Во всяком случае, посмотрите на мой код:
def coin_problem(price, cash_coins):
if (price < 0):
return []
if (price == 0):
return [[]]
options = []
for a_coin in cash_coins:
coins_minus_coin = cash_coins[:]
coins_minus_coin.remove(a_coin)
sub_coin_problem = coin_problem (price - a_coin, cash_coins)
for coin in sub_coin_problem:
coin.append(a_coin)
options.extend(sub_coin_problem)
return options
print coin_problem(4, [1, 2])
Как вы можете видеть, я пытался справиться с известной проблемой монеты рекурсией (и, как я уже писал, я знаю, что многие из них уже спросил об этом, я прочитал их вопросы и ответы, но я до сих пор не мог понять полностью решения).
Этот код был сделан мной, и все. И теперь я застрял и смутился. Когда значение «цены» 4, а значение «cash_coins» является [1,2] вместо возвращения что-то вроде этого:
[1,1,1,1]
[2,2]
[2,1,1]
я получаю что-то подобное:
[[1, 1, 1, 1], [2, 1, 1], [1, 2, 1], [1, 1, 2], [2, 2]]
в комбинация «2» и двойной «1» повторяется 3 раза вместо «1». Я не знаю, что мне делать, чтобы исправить проблему или улучшить код, чтобы он работал лучше.
Я не вижу рекурсии, но вижу, что вы используете 'cash_coins' как итерабельную, так и функцию. – cmd
cmd: Действительно, моя ошибка. проверить снова. Что теперь? Г-н. E: еще раз, моя ошибка. проверить снова. – user2969278
Действительно ли 'cash_problem' должна быть' coin_problem'? – Izkata