求1+2+…+n

要求不能使用乘除法、for、while、if、else、switch、case等关键字

以及条件判断语句(A?B:C)

 

 

typedef int (*fptrSum)(int n);

struct M{

fptrSum Sum;

};

struct M A[2];

int Sum0(int n)

{

return n;

}

 

int Sum1(int n)

{

return A[!!(n-1)].Sum(n-1) + n;

}

 

int main()

{

int val = 0;

int n = 100;

A[0].Sum = Sum0;

A[1].Sum = Sum1;

 

val = A[1].Sum(n);

 

printf("%d",val);

 

system("PAUSE");

}

 

这道题的关键就是多态,函数指针的使用,根据n值决定到底使用哪个求和函数

posted @ 2013-11-09 10:49  SLVR  阅读(143)  评论(0编辑  收藏  举报