私はこの機能を見て一歩一歩進みましたが、sortedCoins(0-1)
をsortedCoins(0)
とし、終了時はy == -1
を使用して呼び出すのは避けてください。どうして?スカラ:IndexOutOfBoundsException:-1
def countChange(amount: Int, coins: List[Int]): Int = {
var x = coins.length
var y = x
val sortedCoins = coins.sortWith(_ < _)
def cc(amount: Int, x: Int): Int = {
y -= 1
if (amount == 0) 1
else if (y == 0) cc(amount - x, sortedCoins(y))
else if (amount < 0 || y == -1) 0
else cc(amount, sortedCoins(y - 1)) + cc(amount - x, sortedCoins(y))
}
cc(amount, x)
}
私は、デバッガを使ってプログラムを実行して行単位でステップする方法を学ぶことをお勧めします。あなたにとって(この問題と将来の問題のために)本当に役に立ちます。質問者がこのように簡単に解決することができるかどうか尋ねると、驚くべきことです。 –
「coins:List [Int]」と表示されるとき、 '。少なくとも、値クラスを使用する必要がありますが、実際にはADT(代数データ型)を使用する必要があります –
これは宿題の問題ですか?私はこれをCourseraコースで見たようです... – WillD