题解 | #求1+2+3+...+n#
求1+2+3+...+n
http://www.nowcoder.com/practice/7a0da8fc483247ff8800059e12d7caf1
一开始完全没有头绪,查看了别的同学的做法后醍醐灌顶。
首先加减法是可以用的,而其他一切循环手段和乘除法都不能用。既然循环语句不能用,那么就只能递归了。问题是在于递归如何设置结束条件,if语句不能使用。这段代码的巧妙之处就在于利用了&&逻辑与的短路执行特性,只要遇到一个假,后面则不再执行,直接返回假。
class Solution {
public:
int Sum_Solution(int n) {
int result = n;
result && (result += Sum_Solution(n - 1));
return result;
}
};