0
ループを使用するスカラーで再帰関数を定義する際に問題が発生しています。この関数は、ある範囲のコイン貨幣(ウォレット)を通過しなければならず、特定の条件が満たされた場合、リストのリストを返します。そうでなければ、それ自身を再び呼び出す。スカラーでは、再帰関数内でループを使用できますか?
def subtractCoin(money: Int, wallet: List[Int], coins: List[Int], coinsSet: List[List[Int]]): List[List[Int]] = {
for (i <- 0 to wallet.length) {
if (money - wallet(i) < 0) {
if (money - coins.reduce(_ + _) == 0) (coinsSet :+ coins.sortWith(_ > _)) else coinsSet
}
else subtractCoin(money - wallet(i), wallet, coins :+ wallet(i), coinsSet)
}
}
Iました次のコンパイルエラー:ここで私が書いたコードがある
error: type mismatch;
found : Unit
required: List[List[Int]]
for (i <- 0 to wallet.length) {
^
なぜそれがループ上の結果の型を課している
?ループを使用する方法はありますか? foreach
は代わりになりますか?前もって感謝します。
rangeOfCoins.length == 0の場合はどうなりますか?リスト[リスト[Int]]を返しますか? – dave
こんにちはデイブ、申し訳ありませんが、私の悪い、エラーメッセージのrangeOfCoinsはウォレットに対応しています(修正済みです)。この条件は、関数を呼び出す前にコード内でフィルタリングされます。 – Sandra