我在嘗試學習有關Python 3.x的動態編程和遞歸。下面的代碼是一個簡單的例子,從我的教科書:列表解析的解釋
def recMC(coinValueList, change):
minCoins = change
if change in coinValueList:
return 1
else:
for i in [c for c in coinValueList if c <= change]:
numCoins = 1 + recMC(coinValueList, change-i)
if numCoins < minCoins:
minCoins = numCoins
return minCoins
print(recMC([1,5,10,25], 63))
我真的很努力去理解第6行這裏,行理解。我完全不確定這裏發生了什麼,以及如何將它分解成循環以便更容易理解。這是我的想法,因爲它代表:
for i in c:
for c in coinValueList:
if c<= change:
但我不明白這是如何迭代通過。也許有更好的知識的人可以用不同於我的書和教授的方式來解釋這一點?
'list'對變量名來說是一個糟糕的選擇,因爲它會隱藏內建的'list()'方法。 –
@BurhanKhalid - 是的,你是對的!我用「硬幣」取代了「名單」 –