这是一个明显的递归函数:
function()
{
function();
}
我们只是称之为“递归” - 但这个(几乎没有)更复杂的版本呢?
functionLeft()
{
functionRight();
}
functionRight()
{
functionLeft();
}
这种情况是否有一个术语,例如“双递归”?或者没有具体的术语来区分这种情况和上面的单一功能案例吗?
答案 0 :(得分:27)
它被称为mutual recursion。
答案 1 :(得分:16)
正如Jon Purdy所说,你给出的例子叫做“相互递归”。术语“双递归”也存在,但具有不同的含义:当函数使用两个递归调用时。典型的例子是Fibonacci函数“
int Fib(int n)
{
if (n < 2) return 1;
return Fib(n-1) + Fib(n-2);
}
Fib(n)函数以递归方式调用自身两次。
答案 2 :(得分:1)
双递归的一种解释可能是分而治之(例如)快速排序
quicksort = quicksort smaller ++ pivot ++ quicksort larger