50、求1+2+3+...+n

题目

  • 求1+2+3+…+n,要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句(A?B:C)

思路

  • 常规方法计算之和是n(n+1)/2,所以使用的也就是循环或者递归方法,就会用到for、while等条件、循环判断语句
  • 所以使用的方法是逻辑运算符你&& ||
  • 本方法使用的是&&逻辑运算符,使用的特性就是短路特性。
  • &&短路特性:条件1 && 条件2 条件1和2只有同时为true时,结果才为true,如果条件1为false,那么结果直接为false,不用判断条件2结果,这种判断方法称为短路

代码

public class Solution {
    public int Sum_Solution(int n) {
        int sum = n;
        //当sum=0,意味着n个数循环相加结束,跳出递归条件,直接return sum;
        boolean flag = (sum>0)&&((sum+=Sum_Solution(--n))>0);
        return sum;
    }
}

牛客代码:

  • 思路:使用递归的方法,递归的结束条件使用的是异常处理,当出现sum(0)时会捕捉异常,直接返回0
  • 当没有出现异常的时候,sum(n)=n+sum(n-1)循环相加,直到sum(0)出现
public class Solution {
    public int Sum_Solution(int n) {
        return sum(n);
    }
    int sum(int n){
        try{
            int i = 1%n;
            return n+sum(n-1);
        }
        catch(Exception e){
            return 0;
        }
    }
}
全部评论

相关推荐

09-25 10:34
东北大学 Java
多面手的小八想要自然醒:所以读这么多年到头来成为时代车轮底下的一粒尘
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务