换零钱总的思路就是包括某个币值的和不包括的,然后递归。
用递归的思路不需要考虑太多的细节,对于这种加的递归,我们简单来看就是一个递归树的执行,也就是说两者不可能是同时的,所以不用考虑冲突的问题。
var i []int func main() { i = []int{1, 2, 3, 5, 10} println(fff(2, 5)) } func fff(a, n int) int { if a == 0 { return 1 } if a < 0 || n == 0 { return 0 } return fff(a, n - 1) + fff(a - i[n - 1], n) }
end