我使用分层数据结构做一些事情,并且我设计了一组方法来使用间接递归遍历/分析它,如下所述。
有方法a, b,c和d, 都有一个Unit返回类型。a首先调用方法。根据数据,它会做一些事情,然后停止或调用其中之一b/c/d。b、c 和 d 中的每一个都相同——每个方法都可以停止或调用其他 3 个方法中的任何一个。所以调用了哪些方法,它们的执行顺序直到运行时才知道,并且递归并不直接明显,因为没有方法直接调用自己(不用担心,每个方法都会被注释以描述循环/递归的性质来电)。
a对、b、c或的每次额外调用d都是每个方法中执行的最后一件事,但它并不是每个方法的最后一条语句;将有一个iforcase语句来控制将调用哪个语句。
鉴于没有方法直接调用自身,Scala 编译器是否能够分析这个多层调用链并为其实现尾递归?