递归方法实现找零钱
step1:
初始化最小次数,最小次数不会比要找的零钱还大
step2:
递归跳出条件,如果剩下要找的零钱再硬币面值中
step3:
递归找零钱
def coin_change(coins, change):
min_count = change
if change in coins:
return 1
for value in [i for i in coins if i<change]:
count = 1+ coin_change(coins, change-value)
if count<min_count:
min_count = count
return min_count
测试
coins = [1, 3, 5]
change = 8
coin_change(coins, change)
2
手动验证:
当value为1时,
count = 1 + f(6)= 1+ 1 + f(5) ; 5 in coins; 所以 count = 1 +1 + 1 =3
value为2时
count = 1+ f(5) ; 5 in coins; so, count = 1+1 =2