2

我必须使用一个结构,该结构需要递归地在另一个列表中的一个列表上进行迭代(这种结构类似于从事务列表中创建频繁项时使用的结构)。下面是伪代码。

我收到一个错误,说下面的 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)
      }
    }
  }
}
4

0 回答 0