题目:求1+2+…+n,要求不能使用乘除法、for、while、if、else、switch、case等关键字以及条件判断语句(A?B:C)。
方法1:使用函数指针。
typedef int (*function)(int);int func1(int n){ return 0;}int func2(int n){ function f[2]={func1,func2}; return n+f[!!n](n-1);}void main(){ cout<方法2:使用构造函数。
class test{ static int N; static int sum;public : test(){sum+=++N;} static void reset(){N=sum=0;} static int getSum(){return sum;}};int test::N = 0;int test::sum = 0;void main(){ test::reset(); test *p=new test[10]; cout<方法3:使用虚函数的编译多态性
class A{ public: virtual int sum(int n){return 0;};};class B:public A{ public: int sum(int n){ A a;B b; A *p[2]={&a,&b}; return n+p[!!(n-1)]->sum(n-1);}};void main(){ B b; cout<