牛客_求1+2+3+...+n

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/zhangvalue/article/details/88023408

题目描述

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

思路一:

首先想到的是使用递归的方法,难点就是递归结束的条件不好想,最终巧妙利除法中被除数不能为0的特点来

//确保只要n不为0的情况之下i每次都为1,依次累加1达到最终累加和的目的
//利用了只要n为0的情况就catch退出的目的

public class Solution {
    public int Sum_Solution(int n) {
        return Sum(n);
    }
    int Sum(int n){
        try{
       //确保只要n不为0的情况之下i每次都为1,依次累加1达到最终累加和的目的
       //利用了只要n为0的情况就catch退出的目的
            int i =1%n;
            return n+Sum(n-1);
        }catch(Exception e){
            return 0;
        }
    }
}

思路二:

另一种思路是利用了&&短路的想法,当boolean类型的&&两边只有有一个为false就直接后面的不用判断了,同样是巧妙的利用了这个特性来作为递归的结束条件

public class Solution {
    public int Sum_Solution(int n){
        //定义sum用来作累加和
        int sum = n;
        boolean ans = (n>0)&&((sum+=Sum_Solution(n-1))>0);
        return sum;
}
}

猜你喜欢

转载自blog.csdn.net/zhangvalue/article/details/88023408