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

вот очевидно рекурсивная функция:

function()
{
    function();
}

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

functionLeft()
{
    functionRight();
}

functionRight()
{
    functionLeft();
}

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

3 ответов


Это называется взаимная рекурсия.


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

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

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


один interpertaion двойной рекурсии может быть разделяй и властвуй (электронная.г) функции quicksort

quicksort = quicksort smaller ++ pivot ++ quicksort larger