我必须使用一个需要迭代迭代另一个列表中的列表的结构 (类似于从事务列表中创建频繁项目时使用的结构)。 下面是伪代码。
我收到错误,说下面的iterRecur不是尾递归。尾递归错误指向seqElem <- this.mySeq
下面的flatMap行
你能建议我如何修复代码吗?
trait SeqElem[T] {
name: String
children: List[Node[T]]
class Structure[T](mySeq: List[SeqElem[T]]) {
def getStructure(node: Node[T]): this.type = {
...
}
def iterRecur(leastCount: Long, listA: List[T]): Unit = {
val sumSeq =
for(
//@tailrec annotation points this as causing problem
seqElem <- this.mySeq;
node <- seqElem.children;
if seqElem.count > leastCount
){
val newStructure = getSubstucture(node)
if (newStructure.mySeq.length > 0){
newStructure.iterRecur(leastCount, listA ++ List(seqElem.name))
}else{
println(listA)
}
}
}
}