【问题标题】:Scala stack overflow errorScala堆栈溢出错误
【发布时间】: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)}
  }
}

【问题讨论】:

    标签: scala recursion


    【解决方案1】:
    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)
        quicksort(lesserList) ::: List(x) ::: quicksort(greaterList)
      }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-01-26
      • 2019-02-16
      • 2011-09-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多