1.题目
求1+2+3+…+n,要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句(A?B:C)
2.代码展示
方法一:
class Sum {
public:
Sum() {
_sum += _i;
++_i;
}
static int GetSum() {
return _sum;
}
static void Init() {
_sum = 0;
_i = 1;
}
private:
static int _sum;
static int _i;
};
int Sum::_sum =0;
int Sum::_i = 1;
class Solution {
public:
int Sum_Solution(int n) {
Sum::Init();
Sum a[n];
return Sum::GetSum();
}
};
方法二:
class Solution {
public:
int Sum_Solution(int n) {
int ret = n;
n && (ret += Sum_Solution(n-1));
return ret;
}
};
3.解题思路
方法一:是通过构造函数实现累加,注意每次都要初始化,不然后台运行的时候,用的是之前的值,这也是为什么我们在Vs 和网站上刷题结果不同的原因。
方法二:递归,结束条件用&&实现,递归如果n过大,效率就低了。