You need to clarify what kind of recursion you are talking about. There are algorithmic recursion and recursion in the implementation. It is true that any recursive algorithm allows a direct non-recursive implementation - this can easily be done using the standard recursion modeling trick with a manual stack.
However, your question only mentions algorithms. If we assume that we are talking about algorithmic recursion, then the answer is yes, there are algorithms that are inherently and inevitably recursive. In the general case, it is impossible to replace a recursive algorithm with a non-recursive one. The simplest way to build an algorithm with integral recursion is to first take the structure of the recursive structure. For example, let's say we only need to traverse the tree with parent connections (and without one-to-parent links). It is impossible to come up with a reasonable non-recursive algorithm to solve this problem.
So, this one example for you: traversing a tree that has only parent-to-child links cannot be performed by a non-recursive algorithm.
Another example of a recursive algorithm is the well-known QuickSort algorithm. QuickSort is always recursive and cannot be turned into a non-recursive algorithm simply because if you succeed, it will no longer be QuickSort. This will be a completely different algorithm. Of course, this sounds like an exercise in pure semantics, but nonetheless it is also worth mentioning.
source share