我正在尝试学习Python3.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行,理解。我完全不确定这里发生了什么,以及如何将其分解成循环以更容易理解。我的想法是:
^{pr2}$但我不明白这是怎么重复的。也许知识更丰富的人可以用不同的方式来解释这一点,而不是我的书和教授?在
同:
^{pr2}$列表理解更容易编写代码,更易于阅读。
列表理解是“python方式”。在
让我解释一下
使用
coinValueList
中小于change
的值创建新列表 在此之后,您将迭代新列表。在注意:如果您坚持使用理解,那么考虑生成器语句,它将以相同的方式工作,但不会消耗内存。在
所以循环的结果不应该是
^{pr2}$但是
^{3}$相关问题 更多 >
编程相关推荐