我做了递归函数,就像
require : L (List[Int])
L模式匹配
> Nil => Thread.dumpStack()
> x :: xs => print(x)函数(xs)
06001
val l = (1 to 5).toList //
function(l)
所以我认为这个函数在堆栈框架中n次,但是它发生了一次,我觉得这个函数已经找到了Nil并打印出异常的Thread.dumpStack.
scala编译器是智能还是其他?
解决方法
您正在观察尾递归:从一次迭代到下一次迭代没有任何内容存储,因此递归基本上由编译器转换为while循环. (所以,是的,编译器很聪明.)