描述:

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