题目描述
求1+2+3+...+n,要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句(A?B:C)。
1.用静态成员变量作为参数,通过创建这么多个对象来计算,虽然底层还是加法
class Solution {
public:
class Sum
{
public:
Sum()
{
s_count++;
s_sum += s_count;
}
static int GetSum()
{
return s_sum;
}
static void ReSetSum()
{
s_sum = 0;
s_count = 0;
}
private:
static int s_count;
static int s_sum;
};
int Sum_Solution(int n) {
Sum::ReSetSum();
Sum *ps = new Sum[n];
delete[] ps;
return Sum::GetSum();
}
};
int Solution::Sum::s_count = 0;
int Solution::Sum::s_sum = 0;
2.使用二维数组来写,底层还是乘法
class Solution {
public:
int Sum_Solution(int n) {
bool a[n][n+1];
return sizeof(a)>>1;
}
};