题目描述
求1+2+3+...+n,要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句(A?B:C)。
数据范围: 0< n ≤200
进阶: 空间复杂度 O(1),时间复杂度O(n)
代码解析
思路:通过定义数组对象,利用多次调用构造函数,结合静态成员变量、静态成员函数使用实现累计功能。
class Sum{
public:
Sum(){
_ret += _i;
_i++;
}//构造函数
static int GetSum(){
return _ret;
}
static void Init(){
_i = 1;
_ret = 0;
}
private:
static int _i;
static int _ret;
};
int Sum::_i = 1;//静态成员变量在类内声明,类外定义
int Sum::_ret = 0;
class Solution {
public:
int Sum_Solution(int n) {
Sum::Init();//防止接口多次调用导致的错误,故先初始化
Sum array[n];//也可以使用new开辟数组的形式实现
return Sum::GetSum();
}
};