リストで最大サイズの整数を返す必要がある次の再帰関数が Scala にあります。最大値が返されない理由を教えてくれる人はいますか?
def max(xs: List[Int]): Int = {
var largest = xs.head
println("largest: " + largest)
if (!xs.tail.isEmpty) {
var next = xs.tail.head
println("next: " + next)
largest = if (largest > next) largest else next
var remaining = List[Int]()
remaining = largest :: xs.tail.tail
println("remaining: " + remaining)
max(remaining)
}
return largest
}
Print out ステートメントは、List 内の最大値を head として正常に戻すことができたことを示しています (これは私が望んでいたことです) が、関数は依然としてリスト内の元の head を返します。これは、xs の参照がまだ元の xs リストを参照しているためだと推測しています。問題は、それが val であるため、それをオーバーライドできないことです。
私が間違っていることはありますか?