Dart
I guess this would be the classical way of doing recursion without any actual recursive function. No function below refers to itself by name, directly or indirectly.
(Try it at try.dartlang.orgdartpad.dartlang.org)
// Strict fixpoint operator.
fix(f) => ((x)=>f(x(x))) ((x)=>(v)=>f(x(x))(v));
// Repeat action while it returns true.
void repeat(action) { fix((rep1) => (b) { if (b()) rep1(b); })(action); }
main() {
int x = 0;
repeat(() {
print(++x);
return x < 10;
});
}