python 递归 找零钱
def coins_changeREC(coin_values, change):
min_count = change
if change in coin_values:
return 1
for value in [i for i in coin_values if i <= change]:
count = 1 + coins_changeREC(coin_values, change-value)
if count < min_count:
min_count = count
return min_count
不太理解,求大佬解释一下
if count < min_count:
min_count = count
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
首先回答你的问题
每次走到注释1的地方的时候,对于一个coin_value开始的递归链已经结束并得到了总数。
这段代码意思是在对于每个面额硬币开始的递归过程中,不断维护min_count这个变量,使其为所有可能性组合中最小的硬币数目。但是如果一开始不给min_count赋值,那就需要在第一次有得到count值的时候,额外增加判断min_count是否有值的逻辑,如果有,和min_count比较,两者中较小值,如果无值,将count赋给min_count。而总额的数目比如20,比如50,肯定大于等于需要的硬币数,所以min_count值是个很好的初始值,只要无脑把count和min_count中较小值赋值给min_count就好了。
如果不给min_count初始值,则代码大致为:
一点ps:
简单的讲,就是遍历所有可能找钱的方案,找到最小的 min_count, 然后返回。
复杂点讲:
欢迎关注公众号:搬砖程序员带你飞