求1+2+3+…+n,要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句(A?B:C)。
//解法一(递归模拟循环)
class Solution {
public:
int sum=0;
int Sum_Solution(int n) {
sum+=n;
--n;
//&& 若有一个条件不成立,不会继续执行该条件后面的条件,
//而是直接返回false
(n>0)&&Sum_Solution(n);
return sum;
}
};
//解法二(构造函数模拟循环)
class _solution{
public:
static int sum;
static int N;
_solution(){
++N;
sum+=N;
}
};
int _solution::sum=0;
int _solution::N=0;
class Solution {
public:
int Sum_Solution(int n) {
_solution::sum=0;
_solution::N=0;
//创建n个对象,则调用了n次构造函数
_solution a[n];
return _solution::sum;
}
};