def countChange(money: Int, coins: List[Int]): Int = {
def compare(a: Int, b: Int) = {
if (a == b) "=="
else if (a > b) ">"
else "<"
}
def calculateChange(sum: Int, coins: List[Int]): Int = {
if (coins.isEmpty) 0
else
compare(sum + coins.head, money) match{
case "==" => 1 + calculateChange(sum, coins.tail)
case ">" => calculateChange(sum, coins.tail)
case _ => calculateChange(coins.head + sum, coins) + calculateChange(sum, coins.tail)
}
}
calculateChange(0, coins)
}
}