Какой термин для "двойной рекурсии"?

Здесь явно рекурсивная функция:

function()
{
    function();
}

Мы просто назовем это "рекурсивным" - но что относительно этой (едва) более сложной версии?

functionLeft()
{
    functionRight();
}

functionRight()
{
    functionLeft();
}

Есть ли термин для этого сценария, например, "двойная рекурсия"? Или нет специального термина, чтобы отличить этот случай от однофункционального случая выше?

Ответ 2

Как сказал Джон Пурди, пример, который вы дали, называется "взаимная рекурсия". Термин "двойная рекурсия" также существует, но имеет другое значение: когда функция использует два рекурсивных вызова. Классическим примером является функция Фибоначчи "

int Fib(int n)
{
  if (n < 2) return 1;
  return Fib(n-1) + Fib(n-2);
}

Функция Fib (n) рекурсивно вызывает себя дважды.

Ответ 3

Одна взаимосвязь двойной рекурсии может делить и побеждать (например, quicksort

quicksort = quicksort smaller ++ pivot ++ quicksort larger