我需要一些帮助,因为我觉得我迷路了。我以前在这个网站上搜索过,当然我也用谷歌搜索过,但相信我,如果它对我来说这么简单,我根本就没有问过,所以请善待我。我是 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])
正如你所看到的,我试图通过递归来处理著名的硬币问题(正如我之前写的,我知道很多人已经问过这个问题,我阅读了他们的问题和答案,但我仍然无法完全理解解决方案)。
这段代码是我写的,全部都是。现在我陷入困境和困惑。当“price”的值为 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”。我不知道我应该怎么做才能解决问题或改进我的代码,以便更好地工作。