#6 is the one I tend to use for most of my loops although I do it a little differently.
AI_Loop()
// All my loops call the same Delay which
// handles game paused, the units delay,
// game over, and etc. Return of 0 is exit loop.
if (!Delay())
return;
//
// execute some code
//
spawn()
AI_Loop()
ts
That's probably your loose personal definition. In most applications where you have to follow a strict set of rules, such as programming and math, it's possible to have a more correct answer. Two answers may achieve the same thing, however, the one that follows the rules more will always be more correct.