有这样一道编程题,要求不能使用乘除法,for,while,if,else,switch,case等关键字及条件判断语句(A?B:C),并且不能运用递归。编写代码如下。
class sum
{
public:
sum()
{
i++;
_sum += i;
}
static int i;
static int _sum;
};
int sum::i = 0;
int sum::_sum = 0;
class Solution
{
public:
int SumSolution(int n)
{
new sum[n];
return sum::_sum;
}
};
int main()
{
Solution s1;
printf("%d\n", s1.SumSolution(100));
return 0;
}
在SumSolution里通过创建n个sum对象,调用n次sum的构造函数,在构造函数进行求值运算,充分利用了之前所学的static成员变量。运行结果如下。