题解 | #求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)。

解题思路

不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句(A?B:C),因为题目划定了很多限定条件,那么就需要另辟蹊径

递归 时间复杂度O(n) ,空间复杂度O(n)

从1加到n使用递归算法

    public static int Sum_Solution(int n) {
        if(n <= 0){
            return n;
        }
        return Sum_Solution(n-1) +n;
    }

公式推演 时间复杂度O(n) ,空间复杂度O(1)

1+2+3+...+n平常的解题思路来说可以使用(n+1)*n/2来得出结论,但是限定不能使用乘除法,那么可以使用(n+图片说明 ) >>1来代替

    public static int Sum_Solution(int n) {
      return (int)(Math.pow(n,2)+n) >> 1;
    }
全部评论

相关推荐

02-28 17:01
门头沟学院 C++
俊朗的铁猫希望被捞:兄弟如果只想搞钱的话,你这个简历最适合的其实是辅导机构做dai写啥的真的特别赚
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务