题目描述:
求1+2+3+…+n,要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句(A?B:C)。
解题思路:
思路1:
利用短路特性,n为0则不会执行后面的语句。
class Solution {
public:
int Sum_Solution(int n) {
int ret = n;
n && (ret += Sum_Solution(n-1));
return ret;
}
};
思路2:
设置一个全局变量N和sum,在构造函数中进行累加运算,然后构造一个以辅助类为类型、大小为n的数组,重复调用此构造函数n次来实现n次的累加运算。
int N = 0;
int Sum = 0;
class support{
public:
support()
{
++N;
Sum += N;
}
};
class Solution {
public:
int Sum_Solution(int n) {
N = 0;
Sum = 0;
support s[n];
return Sum;
}
};