関数型プログラミングの学習を始めたばかりで、頭を悩ませています。これは私が現在持っているものです。なぜ機能しないのかはわかっていますが (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 にすることを考えましたが、可変変数を使用して回避するためのギミックな方法のようです。
櫛 + 1 を println("combination found") に置き換えると、見つかった適切な量の基本ケースが出力されるので、すべての可能性を適切に反復していると確信しています。
ありがとう