题解 | #《剑指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;
    }
}
全部评论

相关推荐

杨柳哥:这不是普通人,那这个钱的是天才
点赞 评论 收藏
分享
1 收藏 评论
分享
牛客网
牛客企业服务