什么是“双递归”一词?

时间:2011-01-03 17:04:11

标签: language-agnostic recursion terminology

这是一个明显的递归函数:

function()
{
    function();
}

我们只是称之为“递归” - 但这个(几乎没有)更复杂的版本呢?

functionLeft()
{
    functionRight();
}

functionRight()
{
    functionLeft();
}

这种情况是否有一个术语,例如“双递归”?或者没有具体的术语来区分这种情况和上面的单一功能案例吗?

3 个答案:

答案 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