为什么我在递归函数的跟踪中看到List(),而我只使用Nil?

时间:2013-10-08 14:49:13

标签: scala recursion

此功能&函数调用:

  def listRange(lo: Int, hi: Int): List[Int] =
    if (lo >= hi) Nil
    else {
        println(listRange(lo + 1, hi) + ","+lo)
        lo :: listRange(lo + 1, hi)
    }                                            
  listRange(1, 3) 

生成此输出:

/> List(),2
//| List(2),1
//| List(),2
//| res1: List[Int] = List(1, 2)

为什么每次递归迭代都会输出一个空列表?

1 个答案:

答案 0 :(得分:4)

List()

is equivalent to Nil,最后调用

println(listRange(lo + 1, hi) + ","+lo)

将从Nil获得listRange的值,并显示该值。