题目描述:

求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;
    }
};