怎么写成尾递归呢?
def walk2(list2:List[Int],string:String):String={ println(s"list2= ${list2},string=${string}") if(list2.isEmpty) string+"啊哈哈,变成空了吧" else walk2( list2.tail,string + list2.head + "JJ") } walk2(a,"")
就是尾递归啊,你第一次执行else后变成了1 List(2,3,4)(中间有空格),然后你a判断又不是空集合,就一直执行了,知道a集合变为空,因为变为空,才没有尾部跟头部概念,才停止运行
不是尾递归,没有加@annotation.tailrec编译器不会按尾递归处理