我必须使用一个结构,该结构需要递归地在另一个列表中的一个列表上进行迭代(这种结构类似于从事务列表中创建频繁项时使用的结构)。下面是伪代码。
我收到一个错误,说下面的 iterRecur 不是尾递归的。尾递归错误指向下面的 flatMap 行seqElem <- this.mySeq
你能建议我如何修复代码吗?
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)
}
}
}
}