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