Recursion without a frame stack is just token looping. The existence of a goal and a transition function does not a reasoner make—unless you track progress, memoize state, and backtrack on error. LLMs do none of these.
Transformers don’t recurse. They unfold. There’s no call stack, no accumulator, no return. There’s no control flow to introspect or manipulate. Every “recursive step” is a new prompt, built via lossy serialization of the prior step’s output. That’s repetition, not recursion.
Avoiding local maxima? Only insofar as random noise avoids overfitting. There’s no global optimization happening—just stochastic sampling from a surface shaped by human priors. You might get diversity, but you don’t get convergence. LLMs don’t do beam search across goals. They don’t retry, compare, or self-reflect. There’s no regret minimization loop.
And even if you wrap them in agent loops with scratchpads and tree searches, you’re building a poor man’s blackboard system—bad Lisp with no memory model. It's not reasoning until the model can inspect, compare, and revise its intermediate state without human mediation. It’s just regurgitating scaffolding we built to give the illusion of momentum.
So yes, you can define a “goal” and a “step function.” But you don't have recursion unless you have state, memory, checkpointing, and rollback. You have an uncontrolled loop over sampled surface noise.
And no matter how many tokens you throw at it, you still can’t scale the human running the debugger.