剑指offer:求1+2+3+...+n
题目:求1+2+3+...+n,要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句(A?B:C)。
分析:利用构造函数、静态变量求解。
class Sum
{
private:
static int n;
static int sum;
public:
static void Reset() { n = 0; sum = 0; }
Sum()
{
n++;
sum += n;
}
static int ret()
{
return sum;
}
};
int Sum::n = 0;
int Sum::sum = 0;
class Solution {
public:
int Sum_Solution(int n) {
Sum::Reset();
Sum* p = new Sum[n];
delete[]p;
p = nullptr;
//因为只有非静态成员函数可以这样调用
//非静态成员只能用对象来调用,因此将
//ret()定义成静态成员函数
return Sum::ret();
}
};