我是Scala的初学者,也是编程的初学者。试图转向数据科学并且我自己学习东西。如果这是一个非常微不足道的问题,我道歉。有人可以告诉我这里的主要功能有什么问题吗?我试图在countChange函数中传递参数,但代码不打印任何东西。我试图查明并理解,但我完全失去了,任何帮助将不胜感激!谢谢!
object main {
def countChange(money: Int, change: List[Int]): Int = {
def totalWays(sum: Int, denomination: List[Int]): Int = {
if (sum < 0) 0
else
if (sum == 0) 1
else
if (denomination.isEmpty && sum >= 0) 0
else
countChange(sum, denomination.tail) + countChange(sum-denomination.head,denomination)
}
countChange(money, change.sortWith(_.compareTo(_) < 0))
}
def main(args: Array[String]) {
val l = List(1,2)
println(countChange(0,l))
}
}
答案 0 :(得分:2)
@jwvh评论中指出的细节正在进行中。看来你从某个地方复制了一些东西而且你迷路了。
您不需要totalWays
内部函数,因为它在调用countChange
时已经实现了您打算执行的操作。因此,您可以简单地解开它并相应地重命名变量:
def countChange(money: Int, denomination: List[Int]): Int = {
if (money < 0) 0
else if (money == 0) 1
else if (denomination.isEmpty && money >= 0) 0
else
countChange(money, denomination.tail) + countChange(money - denomination.head, denomination)
}
此外,您应该使用初始金额和面额列表来调用它:
def main(args: Array[String]): Unit = {
val l = List(1,2)
println(countChange(3,l))
}
// prints: 2