General (partial) recursive functions extend primitive recursive functions by adding the μ-operator: unbounded minimization that searches for the least natural number satisfying a predicate. This introduces partiality — the search may not terminate. The class of general recursive functions exactly coincides with the class of Turing-computable functions, providing one of several independent characterizations of computability discovered in the 1930s.
Understand the μ-operator as a 'while loop' with no guaranteed termination, contrasting it with the bounded loops of primitive recursion. Study how the Ackermann function is captured by μ-recursion to see why the extension is necessary.
You already know that primitive recursive functions are total computable functions built from bounded loops — the recursion always terminates because you count down a fixed argument. The gap you identified there was functions like Ackermann's that escape any bounded-loop schema. The μ-operator (read "mu-operator") fills exactly that gap by adding one new operation: unbounded search.
The μ-operator is defined as follows: given a function f(x, y⃗), define μx[f(x, y⃗) = 0] to be the *least* natural number x such that f(x, y⃗) = 0, provided such an x exists and f is defined on all smaller inputs. If no such x exists, the result is undefined. This is the key difference from primitive recursion — the search might never terminate. In programming terms, this is a `while` loop with no guarantee of exit, as opposed to the bounded `for` loops that primitive recursion encodes. Adding μ to the primitive recursive functions gives you the class of partial recursive functions, also called general recursive functions.
The critical theorem is that this class exactly coincides with Turing machine computability. Any function computable by a Turing machine can be expressed using composition, primitive recursion, and μ, and vice versa. This alignment — discovered independently by Gödel (recursive functions), Church (lambda calculus), and Turing (machines) in the 1930s — is what makes the Church-Turing thesis so compelling. Three entirely different mathematical frameworks, each arrived at from a different angle, all carve out exactly the same class of functions. The robustness of this coincidence is strong evidence that the class captures something real about the nature of computation.
Partiality is not a defect of the theory — it is fundamental. The halting problem shows that no total computable function can decide whether an arbitrary program terminates. Any attempt to restrict to total functions (as primitive recursion does) produces a class that is provably incomplete. The μ-operator introduces partiality by design: it models exactly the step where a computation might run forever. Functions that *happen* to be total and lie outside the primitive recursive class (like the Ackermann function) are captured by general recursion, where the μ-search always terminates but this fact must be proved externally rather than guaranteed by the syntax of the definition. The total recursive functions are those partial recursive functions that happen to be total — a semantically defined subclass for which there is no algorithmic test of membership.