Actually, the C implementation would most likely be recursive, too:

Code:
int factorial(int x) {
****if (x == 1 || x == 0)
********return 1;
****else
********return x * factorial(x - 1);
}
If you really want 1 line:

Code:
int factorial(int x) {if (x==1||x==0) return 1; else return factorial(x-1)*x;}
Also, your C example doesn't use C syntax

Thanks for the link. I'll check it out when I have the time. I'm still curious about how Haskell's performance compares to C/C++, especially for algorithmic code. Maybe Haskell's wiki answers that somewhere.