Language agnostic 什么';“的意思是什么;双重递归;?

Language agnostic 什么';“的意思是什么;双重递归;?,language-agnostic,recursion,terminology,Language Agnostic,Recursion,Terminology,这是一个明显的递归函数: function() { function(); } 我们可以简单地称之为“递归”——但是这个(几乎)更复杂的版本呢 functionLeft() { functionRight(); } functionRight() { functionLeft(); } 这个场景是否有一个术语,例如“双重递归”?或者说,没有专门的术语来区分这种情况和上述的单一函数情况吗?它被称为。正如Jon Purdy所说,你给出的例子被称为“相互递归”。术语“双重

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

function()
{
    function();
}
我们可以简单地称之为“递归”——但是这个(几乎)更复杂的版本呢

functionLeft()
{
    functionRight();
}

functionRight()
{
    functionLeft();
}

这个场景是否有一个术语,例如“双重递归”?或者说,没有专门的术语来区分这种情况和上述的单一函数情况吗?

它被称为。

正如Jon Purdy所说,你给出的例子被称为“相互递归”。术语“双重递归”也存在,但含义不同:当一个函数使用两个递归调用时。经典的例子是斐波那契函数“

intfib(intn)
{
如果(n<2)返回1;
返回Fib(n-1)+Fib(n-2);
}

Fib(n)函数递归调用自己两次。

双递归的一个解释可以是分而治之(例如快速排序)

quicksort = quicksort smaller ++ pivot ++ quicksort larger

请注意,这是一种计算斐波那契数的效率极低的方法(因为您多次执行相同的计算)没错,但这是我能想到的第一个也是最简单的双重递归示例。我想我本可以展示快速排序,但这有点复杂。
quicksort = quicksort smaller ++ pivot ++ quicksort larger