不使用if、goto、switch、while、for、do、?:运算

不使用if、goto、switch、while、for、do、?:运算,用C语言输出hello world 2000次。代码不能超过100行

 #include <stdio.h>

void foo2(int n);

void foo1(int n)
{
printf("hello world %d\n", n);
void (*pf[2])(int);
pf[0] = &foo1;
pf[1] = &foo2;
pf[n / 2000](n + 1);
return;
}

void foo2(int n)
{
return;
}

int main()
{
foo1(1);
return 0;
}

内嵌汇编(我只是来搞笑的...)

或者

 #include <stdio.h>

void foo1() { printf("hello world\n"); }
void foo2() { foo1(); foo1(); }
void foo4() { foo2(); foo2(); }
void foo8() { foo4(); foo4(); }
void foo16() { foo8(); foo8(); }
void foo32() { foo16(); foo16(); }
void foo64() { foo32(); foo32(); }
void foo128() { foo64(); foo64(); }
void foo256() { foo128(); foo128(); }
void foo512() { foo256(); foo256(); }
void foo1024() { foo512(); foo512(); }
int main()
{
/*1024+512+256+128+64+16=2000*/
foo1024();
foo512();
foo256();
foo128();
foo64();
foo16();
return;
}

递归能做吧

为什么想要这样做呢
有什么想法吗?

#define A printf("hello,world\n");
#define B A A A A A A A A A A
#define C B B B B B B B B B B
#define D C C C C C C C C C C
int main(){
D
D
return 0;
}

可以不用递归,而利用堆栈溢出攻击原理

图片说明

图片说明

曹老师的算法太牛逼了,有递归和非递归两种实现方法