一开始完全没有头绪,查看了别的同学的做法后醍醐灌顶。
首先加减法是可以用的,而其他一切循环手段和乘除法都不能用。既然循环语句不能用,那么就只能递归了。问题是在于递归如何设置结束条件,if语句不能使用。这段代码的巧妙之处就在于利用了&&逻辑与的短路执行特性,只要遇到一个假,后面则不再执行,直接返回假。

class Solution {
public:
    int Sum_Solution(int n) {
        int result = n;
        result && (result += Sum_Solution(n - 1));
        return result;
    }
};