题解 | #《剑指offer》求1+2+3+...+n#
求1+2+3+...+n
http://www.nowcoder.com/practice/7a0da8fc483247ff8800059e12d7caf1
描述:
- 求1+2+3+...+n,要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句(A?B:C)。
思路:位运算。
- 不能用等差数列的求和公式,虽然除2可用移位操作,但乘法不好处理,也不能用循环累加求和。
- 可改进,用到循环的地方改成递归,用到if判断的地方改成逻辑运算:利用逻辑短路的特点。
代码(Java实现):
public class Solution {
public int Sum_Solution(int n) {
int sum=n;
boolean flag=(n>0) && ((sum+=Sum_Solution(n-1))>0);
return sum;
}
}