小编eit*_*ita的帖子

如何将函数insert-sort代码更改为tail递归

最近我通过函数式编程风格实现了insert_sort算法,它变得更加简洁和声明.问题是如何将其更改为尾递归,如果列表的大小增加到10000,代码将抛出异常.

def InsertSort(xs: List[Int]): List[Int] = xs match {
    case Nil => Nil
    case x::rest => 
       def insert (x: Int, sorted_xs:List[Int]) :List[Int] = sorted_xs match{
           case Nil => List(x)
           case y::ys => if  (x <= y) x::y::ys else y::insert(x,ys)
       }
       insert(x,InsertSort(rest))
 }
Run Code Online (Sandbox Code Playgroud)

recursion scala tail-recursion insertion-sort

5
推荐指数
1
解决办法
686
查看次数

标签 统计

insertion-sort ×1

recursion ×1

scala ×1

tail-recursion ×1