【剑指offer】求1+2+...+n

求1+2+3+...+n

http://www.nowcoder.com/questionTerminal/7a0da8fc483247ff8800059e12d7caf1

题目描述
求1+2+3+...+n,要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句(A?B:C)。
1、思路分析
不能用乘除法。因此不能直接套用累加公式;不能使用while、for循环,因此不能进行迭代求和;于是我们考虑递归,但跳出递归需要条件判断,如何在不使用if、case等的情况下实现条件判断呢?答案是使用与运算,根据与运算的短路性质,如果第一个表达式为假,就不会计算后面所有表达式的值,我们只需要将递归跳出条件放在第一个表达式,满足后执行的操作放在第二个表达式即可。需要注意的是&&两边均要为逻辑表达式。
2、代码

public class Solution {
    public int Sum_Solution(int n) {
        int ans = n;
        boolean flag = (ans > 0) && ((ans += Sum_Solution(n-1)) > 0);
        return ans;
    }
}
全部评论

相关推荐

11-24 11:23
门头沟学院 C++
点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务