KnowledgeHub
Questions
Tags
Users
Search
Alex Rivera
|
Logout
Edit Question
Title
Body
Found this on /prog/. I actually GDB'd it, and yes, it was truly a recursion. But how did it happen? // This works on 32-bit x86 Linux with gcc as long as you don't enable optimization. #include <stdio.h> #include <stdlib.h> static void factorial(int in, int *out) { *(&in-1)-=5-5*(1/in); *out*=in--; } int main(int argc, char **argv) { int result=1; int number=0; if (argc!=2) exit(1); number=atoi(argv[1]); if (number<1) exit(2); factorial(number, &result); printf("%d! = %d\n", number, result); return 0; } $ ./factorial 3 3! = 6 $ ./factorial 5 5! = 120
Tags (comma-separated)
Save Edits
Cancel