0

这个函数和函数调用:

  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)

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

4

1 回答 1

4

这个

List()

等价于Nil, 所以最后调用

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

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

于 2013-10-08T14:52:33.250 回答