题解 | #求1+2+3+...+n#

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

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

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

public class Solution {
    public int Sum_Solution(int n) {
        //for循环
        int s=0;
        for(int i=0;i<=n;i++){
            s+=i;
        }
        return s;  
    }
}

版本2:

public class Solution {
    public int Sum_Solution(int n) {
        //公式
        return n*(n+1)/2;

    }
}

版本3:

public class Solution {
    public int Sum_Solution(int n) {
        return (int)(n*n+n)/2;
    }
}

版本4:

public class Solution {
    public int Sum_Solution(int n) {
        //Math.pow(底数,几次方)
        //>>带符号右移(相当于除以2)
        return (int)(Math.pow(n,2)+n)>>1;
    }
}

版本5:

public class Solution {
    public int Sum_Solution(int n) {
        //递归
        if (n == 1) return n;
        return n + Sum_Solution(n-1);
    }
}

版本6:

public class Solution {
    public int Sum_Solution(int n) {
        //递归 **用?:条件运算符代替if**
        return (n==1) ? 1 : (n+Sum_Solution(n-1));
    }
}

版本7:

public class Solution {
    public int Sum_Solution(int n) {
        //递归 **用&&代替if**(&&直到前面语句执行错误时,才停止执行下一个语句)
        boolean x = (n > 0) && ((n += Sum_Solution(n-1))>0);
        return n;
    }
}
全部评论

相关推荐

看网上风评也太差了
投递万得信息等公司8个岗位 >
点赞 评论 收藏
转发
1 1 评论
分享
牛客网
牛客企业服务