这里描述的是哪种类型的递归?

问题描述

考虑以下PHP代码

function awesome(array $array): void {
    foreach ($array as $a) {
            if (!is_string($a)) {
                    awesome($a);
            }
    }
}

awesome(array('a' => array('abc'),'b' => array('def'),'c' => array('ghi')));

这里描述的是哪种类型的递归?

我了解线性递归是一种递归,其中递归函数仅被调用一次。在这种情况下,递归函数仅被调用一次,但是该函数调用位于迭代循环内。

当然,这里发生线性递归,而不是其他类型的递归。

解决方法

这是嵌套递归,因为根函数的调用取决于条件。其他人在说多次递归,但这是不正确的,因为多次递归每次都会提示$ a的不同值。