I'm partial to the lisp style:
#include <stdio.h>
int loop(int i){ return ((i==0) ?0 :(printf("%d\n",i),loop(i-1)));}
int main (void){ return loop(10);}
#include <stdio.h>
int loop(int i){ return ((i==0) ?0 :(printf("%d\n",i),loop(i-1)));}
int main (void){ return loop(10);}