Вы должны уточнить, о какой рекурсии вы говорите. Есть алгоритмическая рекурсия и есть рекурсия в реализации . Это правда, что любой рекурсивный алгоритм допускает прямую нерекурсивную реализацию - это легко сделать, используя стандартный прием моделирования рекурсии с ручным стеком.
Однако в вашем вопросе упоминаются алгоритмы * только 1012 *. Если предположить, что речь идет именно об алгоритмической рекурсии, то ответ будет да , существуют алгоритмы, которые по своей природе и неизбежно являются рекурсивными. В общем случае невозможно заменить изначально рекурсивный алгоритм нерекурсивным. Самый простой способ построить изначально рекурсивный алгоритм - это сначала взять изначально рекурсивную структуру данных . Например, скажем, нам нужно пройти по дереву только с родительскими связями (без дочерних с родителями). Невозможно придумать разумный нерекурсивный алгоритм для решения этой проблемы.
Итак, это один пример для вас: обход дерева, который имеет только родительские ссылки, не может быть выполнен нерекурсивным алгоритмом.
Другим примером изначально рекурсивного алгоритма является известный алгоритм QuickSort. Быстрая сортировка всегда рекурсивна и не может быть превращена в нерекурсивный алгоритм просто потому, что если вам это удастся, она больше не будет быстрой сортировкой. Это будет совершенно другой алгоритм. Конечно, это звучит как упражнение в чистой семантике, но, тем не менее, это то, что стоит упомянуть.