【发布时间】:2014-02-26 02:49:58
【问题描述】:
我是 Scala 新手,在处理这部分代码时遇到了问题。我在第 18 / 20 行遇到堆栈溢出错误,但我不知道为什么。
def quicksort(list : List[Int]) : List[Int] = list match {
case Nil => List()
case x::Nil => List(x)
case x::xs => {
val lesserList = partitionLesser(list.tail, list(0))
val greaterList = partitionGreater(list.tail, list(0))
quicksort(lesserList ::: List(x) ::: greaterList)
}
}
def partitionLesser(list : List[Int], pivot : Int) : List[Int] = list match{
case Nil => List()
case x::Nil => List(x)
case x::xs => {
if(x <= pivot) { x :: partitionLesser(list.tail, pivot) }
else { partitionLesser(list.tail, pivot) }
}
}
def partitionGreater(list : List[Int], pivot : Int) : List[Int] = list match {
case Nil => List()
case x::Nil => List(x)
case x::xs => {
if(x > pivot) { x :: partitionGreater(list.tail, pivot) }
else { partitionLesser(list.tail, pivot)}
}
}
【问题讨论】: