私は道に迷っていると思うので、助けが必要です。以前にこのサイトで検索したことはありますし、もちろん Google も検索しましたが、私にとって単純なことであるとすれば、まったく質問していないことを信じてください。私は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」の組み合わせは、「1」ではなく 3 回繰り返されます。問題を修正したり、コードを改善したりして、より適切に機能するようにするにはどうすればよいかわかりません。