刚开始学习函数式编程,但我无法理解它。这就是我目前拥有的,我知道它为什么不起作用(因为 comb 是不可变的),但我似乎无法思考如何做我想做的事。
def countChange(money: Int, coins: List[Int]): Int = {
def rCountChange(money: Int, coins: List[Int], comb: Int): Int = {
if (money >= coins(0)) rCountChange(money - coins(0), coins, comb)
if (money == 0) comb + 1 //base case sequence found
if (coins.isEmpty) comb //base case sequence not found
rCountChange(money, coins tail, comb)
}
rCountChange(money, coins, 0)
}
我想过让一个数组成为一个数组,然后将其附加到它上面并对结果进行 .length 处理,但这似乎只是一种使用可变 var 的噱头方式。
如果我用 println("combination found") 替换 comb + 1 它会打印找到的正确数量的基本案例,所以我很确定它正确地遍历了所有可能性。
谢谢